in reply to Replace the value of a hash

values returns lvalues! You don't have to use keys to modify them (but you do have to get them aliased). This is way cool.
for (values %hash1) { $_ = $hash2{$_} if exists $hash2{$_}; }

The PerlMonk tr/// Advocate