0

次のコードがあります。

    my @tmpRowArr = ();
    while (my $row1 = $sth->fetchrow_hashref()) {
      push (@tmpRowArr, $row1); 
    }
    $cached_query_hash{$uniqKey} = \@tmpRowArr; 

DB クエリの結果をハッシュ参照に格納するために使用されます。has が正しく表示されます。次に、値を読み取りたいのですが、これは機能しません。

  my @tmpRowArr2 = $cached_query_hash{$$value{'id'}} ; 
  foreach (@tmpRowArr2){
       print $_->{id} ; 
  }

任意の洞察をいただければ幸いです。

4

2 に答える 2

1

2つのラインを組み合わせると

$cached_query_hash{$uniqKey} = \@tmpRowArr; 
...
my @tmpRowArr2 = $cached_query_hash{$$value{'id'}} ; 

それらを減らすことができます

my @tmpRowArr2 = \@tmpRowArr;

これが機能しない理由を示す必要があります。配列参照を配列に割り当てています。別のレベルの逆参照が必要です。

my $aref = $cached_query_hash{$$value{'id'}};
for (@$aref) {
    print $_->{id};
}
于 2013-03-23T01:22:37.470 に答える
0

これで問題が解決するようです:

最初の行:

 $cached_panelists_hash{$$value{'id'}} = \@tmpRowArr; 

最後の行:

 my @tmpRowArr2 = @{ $cached_panelists_hash{$$value{'id'}} };
于 2013-03-25T16:37:23.033 に答える