Regarding your syntax
> %hash{-'schema', -'log'}
Well "-" has a meaning in arrays, so I'd rather prefer something else like "!"
But this would get messy if the list also included non-negated elements,
%hash{'schema', -'log'} # WHAT???
so for the sake of a clean design one would rather do only one negation
%hash{! 'schema', 'log'}
I'm not aware of a built-in syntax to do this, but it's basically syntactic sugar for a grep, see demo in debugger
DB<1> @hash{'schema','log',a..c}=('s','l',1..3) DB<2> x \%hash 0 HASH(0x3168da0) 'a' => 1 'b' => 2 'c' => 3 'log' => 'l' 'schema' => 's' DB<3> x +{ %hash{grep !/^schema|log$/, keys %hash } } # Note ° 0 HASH(0x32e09d8) 'a' => 1 'b' => 2 'c' => 3 DB<4>
I know you didn't want grep, but this offers many flexibilities, like dynamically deciding what to exclude.
Cheers Rolf
(addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
Wikisyntax for the Monastery
°) the +{...} is just an anonymous hash for pairwise dump
In reply to Re: Hash/Array slice : how to exclude items?
by LanX
in thread Hash/Array slice : how to exclude items?
by bliako
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |