最近开始做perl。我正在阅读旧代码并试图重写一些东西。我在这里有一个关于哈希引用的问题。
#declar anon hash ref that will be returned
my $store_hash = {};
foreach my $item (@list)
{
#this will iterate based on list
my $ret_hash = ops_getval($item, $user)
#do some magic here to map $ret_hash into $store_hash
}
ops_getval是一个返回ref hash类型的函数。我想将这些值插入$ store_hash。我该怎么做呢?我可以直接做吗
$store_hash = ops_getval($var1,$var2)
非常感谢!
答案 0 :(得分:3)
我认为执行此操作的标准方法是:
@$store_hash{ keys %$ret_hash } = values %$ret_hash;
这会将对ops_getval
的所有调用返回的所有哈希值合并到$store_hash
。
另一种可能更清晰的方法,可能以大量冗余数据复制为代价:
%$store_hash = (%$store_hash, %$ret_hash);
答案 1 :(得分:0)
您可以这样做:
$store_hash->{$item} = $ret_hash
一般来说:
$hashref->{$key} = $value
请点击此处了解详情:http://perldoc.perl.org/perlref.html#Using-References
答案 2 :(得分:0)
要清楚,您可以使用循环来完成此操作。
foreach ( keys%{ $ret_hash } ){
$store_hash->{ $_ } = $ret_hash->{ $_ } ;
}