0

我有以下代码:

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

用于将数据库查询的结果存储到哈希引用中。已正确显示。然后我想读取这些值,但这不起作用:

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

任何见解将不胜感激。

4

2 回答 2

1

如果你结合你的两条线

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

您可以将它们减少到

my @tmpRowArr2 = \@tmpRowArr;

这应该说明为什么它不起作用:您正在将数组 ref 分配给数组。您需要另一个级别的取消引用:

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 回答