如何合并两个Perl哈希表?

4

在走一条冗长/啰嗦/错误的路之前,我想在这里提出一个问题。

我正在使用Perl。我有两个散列。其中一个包含默认值,另一个可能包含用户定义的值,这些值在某些情况下将覆盖默认值。

将这些哈希表连接在一起最简单的方法是什么?但是,如果存在相同键的默认和用户定义值,则选择用户值。

$defaults = {
 type => paper,
 number => 3
};

 $user_defined = {
 number => 5
};

最终需要的联合输出/哈希值为:
$result = {
    type => paper,
    number => 5,
}
3个回答

11

我使用

my $result = { %$defaults, %$user_defined };

4
显而易见的解决方案是正确的:
$result = { %$defaults, %$user_defined };

4

如果您的哈希表只包含简单的标量值(即只有一层),那么提供的答案是很好的。如果您的哈希表可以包含其他哈希表和数组,并且可能有任意深度,则可以考虑使用Hash::Merge将信息合并到其中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接