2013-02-21 64 views
0
哈希

有谁知道如何取消引用哈希散列,这样我可以在我的子程序使用它。正如你所看到的,我在我的子程序中无法访问哈希散列数据结构。如何引用和间接引用哈希用于子程序在Perl

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{和哈希散列不是从%HoH承认$protein关键。我收到错误消息:Global symbol "$protein" requires explicit package name。感谢

+3

这是很难说没有看到整个剧本,但我想你想'$环比{$ FOO} { '名'}'而不是'%环比{$ FOO} { '名'}' 。 – 2013-02-21 04:46:01

+1

好吧,就是这样。谢谢 – cooldood3490 2013-02-21 04:50:06

+1

http://perlmonks.org/?node=References+quick+reference – ysth 2013-02-21 05:25:02

回答

3

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

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

但是复制整个散列是愚蠢的。使用

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