我尝试以树形式打印哈希键和值。我的perl代码如下所示。
use strict ;
use warnings ;
my %hash = (
first => {
a => "one",
b => "two",
c => "three",
},
second => {
d => "four",
e => "five",
f => "six",
},
third => "word",
);
foreach my $line (keys %hash) {
print "$line: \n";
foreach my $elem (keys %{$hash{$line}}) {
print " $elem: " . $hash{$line}->{$elem} . "\n";
}
}
输出错误信息: 第二: d:四 f:六 e:五 第三: 在C:\ Users \ Dell \ Music \ PerlPrac \ pracHash \ hshofhsh_net.pl第19行使用“严格引用”时,不能使用字符串(“word”)作为HASH引用。
这里,第三个键值不打印。我怎么能这样做?
答案 0 :(得分:4)
您无法取消引用字符串($hash{third}
,即word
)。您可以使用ref
来测试特定标量是否为引用:
for my $line (keys %hash) {
print "$line: \n";
if ('HASH' eq ref $hash{$line}) {
for my $elem (keys %{ $hash{$line} }) {
print " $elem: $hash{$line}{$elem}\n";
}
} else {
print " $hash{$line}\n";
}
}