12

在 Perl 中,我需要分析一个巨大的散列,所以我使用Data::Dumper模块将它打印到一个文件中。因为它是一个巨大的文件,所以很难阅读。是否有可能以某种方式Dumper很好地打印输出,所以当我找到我正在寻找的字符串时,我将能够立即看到存储我正在寻找的字符串的关键结构?

目前我只使用一个简单的代码:

            use Data::Dumper;
            ...
            print Dumper $var;

获得良好输出的最佳语法或替代方法是什么?

4

4 回答 4

24

我几乎总是设置

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;

Data::Dumper. 当您的数据结构有多个级别时,第一条语句使输出更紧凑且更具可读性。第二条语句可以更轻松地扫描输出并快速找到您最感兴趣的键。

如果数据结构包含二进制数据或嵌入的制表符/换行符,还要考虑

$Data::Dumper::Useqq = 1;

这将为该数据输出合适的可读表示。

perldoc中的更多内容。

于 2012-03-13T16:42:06.777 回答
10

一种可能的解决方案是使用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

于 2012-03-13T20:16:24.293 回答
0
$Data::Dumper::Sortkeys = 1;

如果您想获得更可靠的结果,那么您接下来必须遵循自卸车。输入合适的词来操作该功能。

于 2013-07-01T07:45:44.150 回答
-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 获取数据。

于 2012-03-13T17:57:46.797 回答