在Perl中我需要分析一个巨大的哈希,所以我使用Data::Dumper
模块将其打印到一个文件中。因为它是一个巨大的文件,所以很难阅读。有可能以某种方式很好地打印Dumper
输出,所以当我找到一个我正在寻找的字符串时,我将能够立即看到我正在寻找的字符串存储的关键结构吗?
目前我只使用一个简单的代码:
use Data::Dumper;
...
print Dumper $var;
获得良好输出的最佳语法或替代方法是什么?
答案 0 :(得分:21)
我几乎总是设置
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
Data::Dumper
。第一个语句使输出更紧凑,并且当您的数据结构有多个级别时,可以更具可读性。第二个语句使扫描输出更容易,并快速找到您最感兴趣的键。
如果数据结构包含二进制数据或嵌入的标签/换行符,也请考虑
$Data::Dumper::Useqq = 1;
将为该数据输出合适的可读表示。
perldoc中的更多内容。
答案 1 :(得分:9)
一种可能的解决方案是使用Data::Dumper::Perltidy通过Perltidy运行Data :: Dump的输出。
#!/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。
答案 2 :(得分:0)
$Data::Dumper::Sortkeys = 1;
如果您想获得更可靠的结果,那么您必须接下来跟随翻斗车。输入合适的词来操作该功能。
答案 3 :(得分:-1)
这回答了这个问题。
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允许你这样做,但你应该问如何使用已发布的WWW :: Scripter API获取数据。