#I have a hash, %myhash; #I pass it by reference: mergetwohashes(\%myhash, \%b); sub mergetwohashes { my($a)=$_[0]; my($b)=$_[1]; $a = { %{$a}, %{$b} }; } #After I call the function, %myhash is unchanged. Why.