如何在Perl中打印嵌套哈希值?

时间:2012-10-07 05:41:56

标签: perl

$dict{'one'}=1;
print %dict;

这将打印

  

one1

到终端。但是,如果我的代码在字典哈希中有字典哈希,如下所示:

my %dict;
$dict{'1'}{'1'}=2;

print %dict;

这给出了输出:

1HASH(0xb1db78)

即使我将最后一行更改为

print $dict{'1'};

输出结果为:

  

HASH(0x13ccb78)

如何获取字典哈希的内容而不是参考位置?

2 个答案:

答案 0 :(得分:7)

如果您想要整个结构,请使用核心Data::Dumper模块。

use strict;
use warnings;

use Data::Dumper;

my %hash;
$hash{1}{1} = 2;

print Dumper( \%hash );

输出:

$VAR1 = {
          '1' => {
                   '1' => 2
                 }
        };

如果你想在Perl中使用嵌套结构(除了任何微不足道的事情),你需要了解 references 。如果你熟悉指针,那么你就在那里。

最好的资源在官方文档中:

答案 1 :(得分:3)

%dict['one']=1;<<这是错误的

应为$dict{'one'}=1;

你应该有类似下面的东西。 警告:这是未经测试的代码,但您明白了我要说的话:

#!/usr/bin/perl -w

use strict;
use Data::Dumper;

my %dict;
$dict{'1'}{'1'}=2;
$dict{'2'}{'2'}=3;

#print Dumper(\%dict);

foreach my $keys ( keys %dict )
{
    print "$keys : ";
    foreach my $keys2 ( keys %{ $dict{keys} } )
    {
        print "$keys2 = $dict{keys}{$keys2} \n" ;
    }
    print "\n";
}