如何组合两个Perl哈希?

时间:2013-04-24 16:56:07

标签: perl

在我采取冗长/冗长/不正确的做法之前,我先问这个问题。

我使用的是Perl。我有两个哈希。一个包含默认值,一个可能是用户定义的值,在某些情况下会覆盖默认值。

将这些哈希值加在一起的最简单方法是什么,但是对于我们选择用户值的相同键,存在默认值和用户定义值。

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

 $user_defined = {
 number => 5
};

所需的最终连接输出/哈希是

$result = {
    type => paper,
    number => 5,
}

3 个答案:

答案 0 :(得分:11)

我用

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

答案 1 :(得分:4)

明显的解决方案是正确的解决方案:

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

答案 2 :(得分:4)

如果您的哈希值具有简单的标量值(即它只有一个深度级别),则提供的答案很好。如果您的哈希可以包含任意深度的其他哈希和数组,那么请查看Hash::Merge作为将信息合并到其中的选项。