我有以下代码:
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} ;
}
任何见解都将不胜感激。
答案 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'}} };