On Wed, 6 Sep 2000 22:58:05 -0400, John Porter wrote: > keys %hash = @things; > >is defined as being equivalent to > > @hash{ @things } = (); > >This is to support hash-based set operations in a more >natural way, i.e. > > keys %hash = grep { exists $a{$_} } keys %b; I have doubts if this would indeed make life simpler. It's a shortcut for something that is already quite simple, but doing nothing for slightly more complex situations. In short: @hash{@keys} = (); is the simple case. It can work even if @keysis not an array, but a list instead (a grep() expression, for example). These are more complex but related things: @hash{@keys) = 0 .. $#keys; Try *that* with a list. Or, coming back to your example: fill a new hash with key/value pairs of %b with only where intries in %a exist: @hash{grep { exists $a{$_} } keys %b} = @b{grep { exists $a{$_} } keys %b}; Ugh. If you can find a simple alternative syntax for these two, then you have my blessing. -- Bart.Thread Previous