##
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};
}