我正在尝试合并两个散列,Hash::Merge几乎完全满足了我的需要,除了数组。我需要它来完成每个元素的合并,而不是连接数组。
例如:
use Hash::Merge qw (merge);
my %a = ( 'arr' => [ { 'a' => 'b' } ] );
my %b = ( 'arr' => [ { 'c' => 'd' } ] );
my %c = %{ merge( \%a, \%b) };期望的结果是('arr'=>[{'a'=>'b','c'=>'d'}]),实际结果是('arr'=>[{'a'=>'b'},{'c'=>'d'}])
这可以通过使用specify_behavior来完成吗?或者还有其他的方法吗?
发布于 2016-03-06 01:55:15
另一种解决方案(处理%a和%b中的不均匀散列元素)。
my %c;
foreach my $key (keys %a, keys %b) {
my $a_ref = $a{$key};
my $b_ref = $b{$key};
$c{$key} = { map %$_, @$a_ref, @$b_ref };
}
use Data::Dumper;
print Dumper \%c;https://stackoverflow.com/questions/35665899
复制相似问题