Data::Dumper и текст в UTF-8

Если вы работаете со сложными структурами данных (массивы хешей, хеши массивов и т.п.), наверняка вы используете для отладки модуль Data::Dumper. Все бы хорошо, но этот модуль категорически не хочет работать с символами в кодировке UTF-8, его вывод выглядит примерно так:

'country' => "\x{420}\x{43e}\x{441}\x{441}\x{438}\x{44f}",
'city' => "\x{41c}\x{43e}\x{441}\x{43a}\x{432}\x{430}",
'airport' => "\x{414}\x{43e}\x{43c}\x{43e}\x{434}\x{435}\x{434}\x{43e}\x{432}\x{43e}",
'code' => 'DME'

Чтобы сделать вывод функции Dumper читаемым, надо просто добавить в программу вот такой кусочек кода:

$Data::Dumper::Useqq = 1;

{ no warnings 'redefine';
sub Data::Dumper::qquote {
my $s = shift;
return "'$s'";
}
}

Тогда вывод будет выглядеть совсем по другому:

'country' => 'Россия',          
'city' => 'Москва',
'terminal' => '',
'airport' => 'Домодедово',
'code' => 'DME'

Data::Dumper и текст в UTF-8: 6 комментариев

  1. perl 5.8.9
    у меня это не работает
    хотя тоже этот способ увидел на perlmonks, но что-то никак (((

  2. Кстати, все работает, я косякнул – написал Dumper::Data::qqoute вместо Dumper::Data::qquote
    Щас исправил, все заработало

  3. Хорошие советы – как классика, никогда не стареют.
    21 век, *ля

  4. Проблема в том, что используется XS версия.
    Чтобы ее отключить надо добавить

    $Data::Dumper::Useperl = 1;

Оставить комментарий

Почта (не публикуется) Обязательные поля помечены *

*

Вы можете использовать эти HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>