While this has been shown to be less than optimal in benchmarks on other nodes, it is the simplest to implement. However, it should be noted that (as far as I am aware) the behavior regarding the merger of duplicate hash keys is undefined. On my computer it happens to be right-associative:
my %a = ('c'=>1,'d'=>2); my %b = ('d'=>1,'e'=>2); my %ab = (%a, %b); # 'd' => 1 my %ba = (%b, %a); # 'd' => 2
If you need to know (or specify) the behavior regarding duplicate keys as mentioned in the OP, you'll probably need a map in conjunction with one of the LIST context examples below.
UPDATE: For example, to create a LIST of repeated key values:
my %a = ('c'=>1,'d'=>2); my %b = ('d'=>1,'e'=>2); my @b{keys %a} = map { exists $b{$_} ? [$b{$_}, $a{$_}] : $a{$_} } key +s %a; # 'd' => [1, 2]
In reply to Re^2: Combining two hashes
by eibwen
in thread Combining two hashes
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |