On 8 Sep 2000 04:57:46 -0000, Perl6 RFC Librarian wrote: >Instead of > > %subhash = map { f($_) ? ($_, $hash{$_}) : () } keys %hash; # lengthy > >one may now write > > %subhash = %hash{f($_)}; # code block f($_) will be evaluated for Truth over all the keys I almost liked that one. I like what it produces: a hash slice that contains not only the values, but the keys and the values, interleaved. But I do not like the built-in grep. I would prefer this syntax: %extract = %hash{@keys}; which is like: %extract = map { $_ => $hash{$_} } @keys; It's more in sync with current perl: @values = @hash{@keys}; which returns a list of (just the) hash values. If you want the grep, you can use it explicitely: %extract = %hash{ grep f($_), keys %hash }; -- Bart.