キーが衝突する可能性があり、値が配列であるPerlで2つのハッシュをマージする方法。衝突の場合、値の配列をマージしたいと思います。
通常のマージで問題ありませんか?
これが繰り返しの場合は申し訳ありませんが、調べてみましたが、そのような具体的なものは何も見つかりませんでした。
ありがとう!
キーが衝突する可能性があり、値が配列であるPerlで2つのハッシュをマージする方法。衝突の場合、値の配列をマージしたいと思います。
通常のマージで問題ありませんか?
これが繰り返しの場合は申し訳ありませんが、調べてみましたが、そのような具体的なものは何も見つかりませんでした。
ありがとう!
%hoa2を%hoa1にマージするには:
for (keys(%hoa2)) {
push @{ $hoa1{$_} }, @{ $hoa2{$_} };
}
これらのハッシュの値は配列参照です。
#!/usr/bin/perl -Tw
use strict;
use warnings;
use Data::Dumper;
# The array ref of the first hash will be clobbered by
# the value of the second.
{
my %hash_a = ( a => [ 1, 2, 3 ] );
my %hash_b = ( a => [ 4, 5, 6 ] );
@hash_a{qw( a )} = @hash_b{qw( a )};
print Dumper( \%hash_a );
}
# To merge the values of the arrays you'd need to handle that like this.
{
my %hash_a = ( a => [ 1, 2, 3 ] );
my %hash_b = ( a => [ 4, 5, 6 ] );
@{ $hash_a{a} } = ( @{ $hash_a{a} }, @{ $hash_b{a} } );
print Dumper( \%hash_a );
}
このプログラムの出力は次のとおりです。
$VAR1 = {
'a' => [
4,
5,
6
]
};
$VAR1 = {
'a' => [
1,
2,
3,
4,
5,
6
]
};
お役に立てば幸いです。