如何将哈希引用复制(插入)到perl中的另一个哈希引用?

时间:2014-01-14 20:55:00

标签: perl hash

最近开始做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)

非常感谢!

3 个答案:

答案 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->{ $_ } ; 
}