Just to help clarify Beechbone's answer,
$a = {%$a, %$b); changes to which hash
$a refers, while
%$a = {%$a, %$b); changes the hash to which
$a refers. English isn't especially precise in this regard either. :) But I hope this helps.
P.S. - You don't need braces to deref bare scalars -
%$a works fine.