Perl打印包含哈希的哈希

在Perl里,有一种很常用的数据结构,哈希里的值是一个新的哈希,比如下面例子

my %hash = (
    foo => {
        id   => 1,
        name => "foo",
    },
    bar => {
        id   => 2,
        name => "bar",
    },
);

如果需要在调试过程打印这类的数据,最简单的方法就是在代码开始加入use Data::Dumper来导入Dumper模块,然后所要做的全部事情就是把哈希的引用传给Dumper就行。

print Dumper(%hash);

结果如下

$VAR1 = {
          'bar' => {
                     'name' => 'bar',
                     'id' => 2
                   },
          'foo' => {
                     'name' => 'foo',
                     'id' => 1
                   }
        };

或者可以直接2次for循环把哈希展开打印:

foreach my $key ( keys %hash ) {
    print "$key: n";
    foreach my $item ( keys %{ $hash{$key} } ) {
        print "  $item: " . $hash{$key}->{$item} . "n";
    }
}

结果如下

bar:
  name: bar
  id: 2
foo:
  name: foo
  id: 1

One thought on “Perl打印包含哈希的哈希”

  1. 确实是把哈希的引用传给Dumper就行
    LZ你少了个 \
    print Dumper(%hash); -> print Dumper(\%hash);

Leave a Reply

Your email address will not be published. Required fields are marked *