我尝试以树的形式打印哈希键和值。我的 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:四个
六:六
乙:五个
第三:
不能在 C:\Users\Dell\Music\PerlPrac\pracHash\hshofhsh_net.pl 第 19 行使用“strict refs”时将字符串(“word”)用作 HASH 引用。
在这里,在第三个键值下不打印。我该怎么做?
最佳答案
您不能取消引用字符串( $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";
}
}
关于perl - 尝试在 perl 中打印混合哈希元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34560660/