【问题标题】:Data::Dumper Perl module数据::Dumper Perl 模块
【发布时间】:2015-05-13 07:34:03
【问题描述】:

以下语句的实际含义是什么?

use Data::Dumper qw(Dumper)

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

你能简单解释一下吗?

【问题讨论】:

    标签: perl perl-module data-dumper


    【解决方案1】:

    简单来说,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 in reference to Hashes

    【讨论】:

      【解决方案2】:

      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
              };
      

      【讨论】:

        【解决方案3】:

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

        Data::Dumper 的文档说:

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

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

        【讨论】:

        • is Dumper 表示将 Perl 代码转储到我们想要使用的地方。
        • 您可以说“Dumper”的意思是“将对象列表的 perl 代码转储为文本的例程”,是的。
        猜你喜欢
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        相关资源
        最近更新 更多