perl - 数组和散列的混合

时间:2013-03-23 01:04:04

标签: arrays perl hash

我有以下代码:

    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} ; 
  }

任何见解都将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果你合并两行

$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};
}

答案 1 :(得分:0)

这似乎可以解决问题:

第一行:

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

最后一行:

 my @tmpRowArr2 = @{ $cached_panelists_hash{$$value{'id'}} };
相关问题