You have to use the whole of the second hash somehow, either implicitly by saying
%hash1 = ( %hash1, %hash2 ); or explicitly by looping. There's no way around looking at each item of the second hash.
So what's wrong with looping over %hash2 and updating %hash1 as you go along?
Perl 6 - links to (nearly) everything that is Perl 6.