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

这将打印

一个1

到终端。但是,如果我的代码在这样的字典散列中有一个字典散列怎么办:

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

print %dict;

这给出了输出:

1HASH(0xb1db78)

即使我将最后一行更改为

print $dict{'1'};

输出是:

哈希(0x13ccb78)

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

4

2 回答 2

8

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

use strict;
use warnings;

use Data::Dumper;

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

print Dumper( \%hash );

输出:

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

如果你想在 Perl 中使用嵌套结构(超越任何琐碎的事情),你需要了解references。如果您熟悉指针,那么您就成功了一半。

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

于 2012-10-07T06:26:33.910 回答
4

%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";
}
于 2012-10-07T06:25:51.763 回答