有没有人知道如何取消引用哈希哈希,以便我可以在我的子例程中使用它。如您所见,我在子例程中访问Hash of Hashes数据结构时遇到问题。
my $HoH_ref = \%HoH; # reference the hash of hashes
for(@sorted) {
print join("\t", $_, get_num($_, $HoH_ref))
}
sub get_num {
my ($foo) = shift;
my $HoH_ref = shift;
my %HoH = %{$HoH_ref}; # dereference the hash of hashes
my $variable = %HoH{$foo}{'name'};
# do stuff
return;
}
我在%HoH{$protein}{'degree'}
附近的第二行到最后一行%HoH{
收到语法错误,并且散列哈希不识别来自$protein
的{{1}}密钥。我收到错误消息:%HoH
。感谢
答案 0 :(得分:3)
访问哈希元素的语法是$hash{KEY}
,而不是%hash{KEY}
。
my %HoH = %{$HoH_ref};
my $variable = $HoH{$foo}{name};
^
|
但复制整个哈希是愚蠢的。使用
my $variable = $HoH_ref->{$foo}{name};