如何基于Common键组合Hashes of Hashes中的子值

时间:2014-01-08 09:22:34

标签: perl hash

如何根据公共密钥

组合哈希哈希值中的值

让我们说:

%hash1 = {'abc'=>{'name'=>'xyz','address'=>'zbt'}}

%hash2 = {'abc'=>{'age'=> 25, 'gender' => 'male'}}

如何将这两个哈希值组合起来,使其变为如下所示?

%hash3 = {'abc'=>{'name'=>'xyz','address'=>'zbt','age'=>25,'gender'=>'male'}}

如果有人可以通过使用Perl标准模块向我展示如何操作,则更愿意。 我使用的是Perl Version 5.8

由于

2 个答案:

答案 0 :(得分:0)

my %hash1 = ('abc'=>{'name'=>'xyz','address'=>'zbt'});
my %hash2 = ('abc'=>{'age'=> 25, 'gender' => 'male'});

my %hash3 = map {
  $_ => {
    %{ $hash1{$_} }, %{ $hash2{$_} }
  }

} keys %hash1;

$hash2{$_}在密钥冲突时优先于$hash1{$_}

答案 1 :(得分:0)

如果您对使用内置模块感兴趣,可以使用Hash :: Merge

在上面的模块中,您可以合并两个哈希值,并指定当两个哈希值之间的键冲突时所需的行为。

选项保留优先顺序完全符合您的要求,并且会合并第一级哈希,因为密钥冲突click here