my %a = ('c'=>1,'d'=>2); my %b = ('d'=>1,'e'=>2); my %ab = (%a, %b); # 'd' => 1 my %ba = (%b, %a); # 'd' => 2 #### my %a = ('c'=>1,'d'=>2); my %b = ('d'=>1,'e'=>2); my @b{keys %a} = map { exists $b{$_} ? [$b{$_}, $a{$_}] : $a{$_} } keys %a; # 'd' => [1, 2]