有一個問題,解釋正是我想在這裏:how to merge 2 deep hashes in perl結合2+「深」(多維)散列在Perl
然而,答案似乎有不爲我工作(建議使用Merge
模塊)。
我有兩個哈希值,像這樣:
$VAR1 = {
'57494' => {
'name' => 'John Smith',
'age' => '9',
'height' => '120'
},
'57495' => {
'name' => 'Amy Pond',
'age' => '17',
'height' => '168'
}
}
};
$VAR1 = {
'57494' => {
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
}
}
};
如果我使用Hash::Merge
或%c = {%a,%b}
格式每次都是這樣,我得到:
$VAR1 = '57494';
$VAR2 = {
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
};
(因此,它基本上與第二改寫第一數據並且弄亂了鍵)當我想要時:
$VAR1 = {
'57494' => {
'name' => 'John Smith',
'age' => '9',
'height' => '120'
'name_address' => 'Peter Smith',
'address' => '5 Cambridge Road',
'post_code' => 'CR5 0FS'
},
'57495' => {
'name' => 'Amy Pond',
'age' => '17',
'height' => '168'
}
}
};
因此,當密鑰相同時,數據會合並在一起,否則新密鑰將被添加到結尾。我希望這是有道理的。也許我使用Merge
錯誤地做了一些事情,或者需要'手動'將它們添加到循環中,但是我花了太多時間思考它,無論如何!
編輯:我如何使用合併,看看我在做一些愚蠢的:
我:
use Hash::Merge qw(merge);
...hash data above as %hash1 and %hash2...
my %combined_hash = %{ merge(%hash1,%hash2) };
print Dumper(%combined_hash);
我不知道。我使用[**'Hash :: Merge' **](http://search.cpan.org/perldoc?Hash::Merge)或[**'Hash :: Merge :: Simple']來獲得所需的結果。 **](http://search.cpan.org/perldoc?Hash::Merge::Simple)。 – Axeman
向我們展示代碼! –
您示例數據中的'}'太多了...... – simbabque