如何引用和取消引用Perl中子例程的哈希散列

时间:2013-02-21 04:37:57

标签: perl reference subroutine dereference hash-of-hashes

有没有人知道如何取消引用哈希哈希,以便我可以在我的子例程中使用它。如您所见,我在子例程中访问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。感谢

1 个答案:

答案 0 :(得分:3)

访问哈希元素的语法是$hash{KEY},而不是%hash{KEY}

my %HoH = %{$HoH_ref};
my $variable = $HoH{$foo}{name};
               ^
               |

但复制整个哈希是愚蠢的。使用

my $variable = $HoH_ref->{$foo}{name};