2013-04-24 66 views
2

我在提出這個問題之前,我需要做一個很長的/詳細的/不正確的方法。我該如何將兩個Perl哈希值進行合併?

我使用Perl。我有兩個哈希。其中一個包含默認值,一個可能是用戶定義的值,在某些情況下可能會覆蓋默認值。

加入這些散列的最簡單方法是什麼?但是同時存在默認值和用戶定義的值,我們選擇用戶值。

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

$user_defined = { 
number => 5 
}; 

所需的最終連體輸出/散列是

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

回答

10

我使用

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

耶 - 酷。經過測試,這完美地工作 – evolution 2013-04-24 17:20:08

4

顯而易見的解決方案是正確的:

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

所提供的答案是好,如果你的散列具有簡單的標量值(即它只有一個深度)。如果您的哈希可以包含其他哈希和數組到任意深度,那麼請查看Hash::Merge作爲合併信息的選項。