Перловый модуль Data::Dumper, который умеет преобразовывать хитро завёрнутые структуры данных (хотя всякие умеет) в вид, хоть как-то пригодный для чтения, а также Data::Dumper::Perltidy, который делает этот вид ещё лучше, избавляя получившийся текст от безумного количества пробелов. Однако кириллица, добытая при преобразовании JSON-файла в перловый объект, выводится последовательностями видав последовательностями вида \x{43e}\x{43f}\x{430}
.
Один из возможных путей обхода — расшифровывать: можно объявить функцию
sub unx {
my @out;
while ( local $_ = shift ) {
s/\\x\{([0-9a-z]+)\}/chr hex $1/ge;
push @out, $_;
}
return @out;
}
и потом её вызывать:
print unx '\x{421}\x{442}\x{430}\x{440}\x{448}\x{438}\x{439}';
Можно, записав её в одну строку, применять её и в отладчике:
DB‹1› sub unx{my@out;while(local$_=shift){s/\\x\{([0-9a-z]+)\}/chr hex $1/ge;push@out,$_}return@out}
DB‹2› p unx '\x{421}\x{442}\x{430}\x{440}\x{448}\x{438}\x{439}
С другой стороны, объекту, объявленному в модуле JSON, вроде, можно указать, как отображать не-ASCII данные:
my $json = JSON->new->ascii(0)->utf8;
Однако на преобразование JSON в объект это не влияет.
Вы должны авторизоваться чтобы опубликовать комментарий.