Perl哈希Data :: Dumper

Ωme*_*ega 11 perl hash dump data-dumper

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

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

            use Data::Dumper;
            ...
            print Dumper $var;
Run Code Online (Sandbox Code Playgroud)

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

mob*_*mob 21

我几乎总是这样

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
Run Code Online (Sandbox Code Playgroud)

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

如果数据结构包含二进制数据或嵌入的选项卡/换行符,也要考虑

$Data::Dumper::Useqq = 1;
Run Code Online (Sandbox Code Playgroud)

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

perldoc中更多.

  • 你不可以。`$Data::Dumper::Indent` 和 `$foo::bar` 是“限定”变量名(它们指定包以及变量名)并且在 `strict` 下允许。 (2认同)

jmc*_*ara 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__
Run Code Online (Sandbox Code Playgroud)

打印:

$VAR1 = [
    { 'title'      => 'This is a test header' },
    { 'data_range' => [ 0, 0, 3, 9 ] },
    { 'format'     => 'bold' }
];
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用Data :: Dump.