Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl哈希数据::转储程序_Perl_Hash_Dump_Data Dumper - Fatal编程技术网

Perl哈希数据::转储程序

Perl哈希数据::转储程序,perl,hash,dump,data-dumper,Perl,Hash,Dump,Data Dumper,在Perl中,我需要分析一个巨大的散列,所以我使用模块将其打印到一个文件中。因为它是一个巨大的文件,所以很难读取。是否可以以某种方式很好地打印转储程序输出,以便在找到要查找的字符串时,能够立即看到要查找的字符串存储的键结构 目前我只使用一个简单的代码: use Data::Dumper; ... print Dumper $var; 要获得好的输出,最好的语法或替代方法是什么?我几乎总是设置 $Data::Dumper::

在Perl中,我需要分析一个巨大的散列,所以我使用模块将其打印到一个文件中。因为它是一个巨大的文件,所以很难读取。是否可以以某种方式很好地打印
转储程序
输出,以便在找到要查找的字符串时,能够立即看到要查找的字符串存储的键结构

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

            use Data::Dumper;
            ...
            print Dumper $var;
要获得好的输出,最好的语法或替代方法是什么?

我几乎总是设置

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
使用
Data::Dumper
。当数据结构有好几层时,第一条语句使输出更加紧凑,可读性更强。第二条语句可以更轻松地扫描输出并快速找到您最感兴趣的键

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

$Data::Dumper::Useqq = 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获取数据。

一个可能的解决方案是通过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' }
];
另一种方法是使用


如果你想得到一个更可靠的结果,那么接下来你就必须遵循转储程序。输入适当的单词来操作该功能。

为什么不举例说明您得到的输出以及您想要的输出?默认情况下,转储程序输出是格式化的,因此您可以很容易地看到密钥结构,那么您还需要什么?-1您问的问题不正确。垃圾场是一个巨大的交织物。问题应该是适当的API调用是什么来获取您想要的数据,而不是如何获取数据。过去,问题的附件中有一条注释,指向WWW::Scripter对象的一个巨大转储的下载,该注释已被删除。这个答案是对那个评论的回复。对不起,我想问一下关于这个答案的新手问题。如果严格的pragma是有效的,那么在上述语句之前,您是否必须对$Data进行某种声明?不,您不需要
$Data::Dumper::Indent
$foo::bar
是“限定”变量名(它们指定了包和变量名),并且在
strict
下允许使用。
$Data::Dumper::Sortkeys = 1;