in reply to Replace the value of a hash
Since the values of your first hash are keys into your second hash, you don't need to do so much looping:
for my $k1 (keys %hash1) { my $k2 = $hash1{$k1}; $hash1{$k1} = $hash2{$k2} if exists $hash2{$k2}; } [download]
duff