in reply to Re: grep for hash?
in thread grep for hash?

That needlessly makes operand evaluation order relevant. Change
my @keys; @new{ @keys } = @orig{ @keys = grep /[adf]/, keys %orig };
to
my @keys = grep /[adf]/, keys %orig; @new{ @keys } = @orig{ @keys };
and you have simpler, clearer code.