0

ハッシュのハッシュを逆参照して、サブルーチンで使用できるようにする方法を知っている人はいますか。ご覧のとおり、サブルーチン内のHashofHashesデータ構造にアクセスできません。

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'}最後から2番目の行の近くで構文エラーが発生し%HoH{、ハッシュのハッシュが$proteinからのキーを認識していません%HoH。エラーメッセージが表示されます:Global symbol "$protein" requires explicit package name。ありがとう

4

1 に答える 1

3

ハッシュ要素にアクセスするための構文は$hash{KEY}、ではなく%hash{KEY}です。

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

しかし、ハッシュ全体をコピーするのはばかげています。使用する

my $variable = $HoH_ref->{$foo}{name};
于 2013-02-21T05:03:17.983 に答える