in reply to Hash slices and too many keys

How about:
@hash{@keys} = (@values, ('') x @keys);
Still ugly, but works.