有一个问题,解释正是我想在这里: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