Хеш-данные Perl:: Самосвал
В Perl мне нужно проанализировать огромный хэш, поэтому я печатаю его в файл с помощью Data::Dumper
. Поскольку это огромный файл, его очень трудно прочитать. Возможно ли как-то распечатать Dumper
вывод красиво, поэтому, когда я найду строку, которую я ищу, я смогу сразу увидеть структуру клавиш, где хранится строка, которую я ищу,
В настоящее время я использую простой код:
use Data::Dumper;
...
print Dumper $var;
Каков наилучший синтаксис или альтернатива для получения хорошего результата?
Ответы
Ответ 1
Я почти всегда устанавливаю
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
с Data::Dumper
. Первый оператор делает вывод более компактным и более читаемым, когда структура данных имеет несколько уровней. Второй оператор упрощает сканирование вывода и быстро находит нужные вам клавиши.
Если структура данных содержит двоичные данные или встроенные вкладки/новые строки, также рассмотрите
$Data::Dumper::Useqq = 1;
который выведет подходящее читаемое представление для этих данных.
Значительно больше в perldoc.
Ответ 2
Одним из возможных решений является использование Data:: Dumper:: Perltidy, который запускает вывод Data:: Dump через Perltidy.
#!/usr/bin/perl -w
use strict;
use Data::Dumper::Perltidy;
my $data = [{ title => 'This is a test header' },{ data_range =>
[ 0, 0, 3, 9] },{ format => 'bold' }];
print Dumper $data;
__END__
Печать
$VAR1 = [
{ 'title' => 'This is a test header' },
{ 'data_range' => [ 0, 0, 3, 9 ] },
{ 'format' => 'bold' }
];
Другой способ - использовать Data:: Dump.
Ответ 3
$Data::Dumper::Sortkeys = 1;
Если вы хотите получить более надежный результат, вы должны следовать за последним. Поместите подходящее слово для работы с этой функцией.
Ответ 4
Это отвечает на вопрос.
my $WWW_Scripter_Plugin_JavaScript_JE = ${ $VAR1->[1]{156192192} };
my $JE_Object_String = ${ $WWW_Scripter_Plugin_JavaScript_JE->{pf}{String} };
my $JE_Object_Function = ${ $JE_Object_String->{props}{search} };
my $REF = ${ $JE_Object_Function->{global} };
my $HTML_DOM_Element_Img = $REF->{classes}{'HTML::DOM::Element::Img'};
Он также нарушает инкапсуляцию. Perl позволяет вам это делать, но лучше спросить, как получить данные с опубликованным API WWW:: Scripter.