Data :: Dumper Perl模块

时间:2015-05-13 07:34:04

标签: perl perl-module data-dumper

以下陈述实际上意味着什么?

use Data::Dumper qw(Dumper)

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

请您简要解释一下?

3 个答案:

答案 0 :(得分:2)

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

示例:

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 in reference to Hashes

答案 1 :(得分:0)

特定语句use Data::Dumper qw(Dumper)表示"在此脚本的命名空间中包含Data :: Dumper模块的Dumper功能列表。"

Data :: Dumper的文档说:

"给定一个标量或参考变量列表,用perl语法写出它们的内容。"

这很有用,因为那时你可以在另一个时候将它们加载回另一个脚本,并依靠Perl本身将文本正确地解析为你以前的perl结构。

答案 2 :(得分: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
        ];

<强> HASHREF

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

COMPLEX HASHREF

[~]=> 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
        };