2

以下陈述实际上是什么意思?

use Data::Dumper qw(Dumper)

Data::Dumper仅用于打印哈希的内容吗?

你能简要解释一下吗?

4

3 回答 3

2

简单来说,Data::Dumper采用 Perl 数据结构并将其转换为包含 Perl 代码的字符串,当eval() ed(即,作为代码运行)时,返回等效的数据结构。出于多种原因,这很有用,但一个非常简单的用途是打印出数据结构以查看它是否与您认为的相符。

例子:

use Data::Dumper qw(Dumper); # Import the Dumper() subroutine
my %hash = ( a => 1, b => 2, c => 3 );
print Dumper(\%hash);  # Note the \ backslash; Dumper() takes references as arguments

输出:

$VAR1 = {
          'c' => 3,
          'a' => 1,
          'b' => 2
        };

它取自Re: Data::Dumper 参考 Hashes

于 2015-05-13T08:00:10.497 回答
0

特定语句的use Data::Dumper qw(Dumper)意思是“在此脚本的命名空间中包含来自 Data::Dumper 模块的 Dumper 功能列表”。

Data::Dumper 的文档说:

“给定一个标量或引用变量的列表,用 perl 语法写出它们的内容。”

这很有用,因为您可以在其他时间将它们加载回另一个脚本,并依靠 Perl 本身将文本正确解析为您之前拥有的 perl 结构。

于 2015-05-13T07:38:31.383 回答
0

Dumper 方法采用标量或引用列表...引用可以来自不同类型的 hashref、arrayref

这是调试复杂结构的好方法

SCALAR(确实不是很有用)

[~]=> perl -e 'use Data::Dumper; $a=1; print Dumper($a);'
$VAR1 = 1;

数组引用

[~]=> perl -e 'use Data::Dumper; @a=(1,2,3,4); print Dumper(\@a);'
$VAR1 = [
          1,
          2,
          3,
          4
        ];

哈希参考

[~]=> perl -e 'use Data::Dumper; %a=(a=>1,b=>2,c=>3); print Dumper(\%a);'
$VAR1 = {
          'a' => 1,
          'c' => 3,
          'b' => 2
        };

复杂哈希参考

[~]=> perl -e 'use Data::Dumper; %a=(a=>1,b=> ["apple","banana","pear"],c=> {z=>99,y=>98}); print Dumper(\%a);'
$VAR1 = {
          'c' => {
                   'z' => 99,
                   'y' => 98
                 },
          'b' => [
                   'apple',
                   'banana',
                   'pear'
                 ],
          'a' => 1
        };

ARRAYREF 和 HASHREF

[~]=> perl -e 'use Data::Dumper; @a=("zidane", "platini", "kopa"); %b=(a=>1,b=>2,c=>3); print Dumper(\@a, \%b);'
$VAR1 = [
          'zidane',
          'platini',
          'kopa'
        ];
$VAR2 = {
          'a' => 1,
          'c' => 3,
          'b' => 2
        };

带循环的 ARRAYREF

[~]=> perl -e 'use Data::Dumper; %a=(x=>1, y=>\%a);  print Dumper(\%a);'
$VAR1 = {
          'x' => 1,
          'y' => $VAR1
        };
于 2015-05-13T08:13:03.047 回答