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]