+{ 'b' => 'B', 'a' => 'A', 'c' => 3 }; #### while (my ($key, $val)= each %hash1) { exists $hash2{$val} and $hash1{$key}= $hash2{$val}; } #### { my %thash= (map (($_,$_), values %hash1), %hash2); @hash3{keys %hash1}= @thash{values %hash1}; }