in reply to Combining two hashes

my %my_third_hash = (%my_hash, %my_second_hash); See also Re: How do I push new data into an existing hash?

Caution: Contents may have been coded under pressure.

Replies are listed 'Best First'.
Re^2: Combining two hashes
by eibwen (Friar) on May 18, 2005 at 08:23 UTC

    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]