in reply to Hash/Array slice : how to exclude items?
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Hash/Array slice : how to exclude items?
by LanX (Saint) on Jan 24, 2023 at 14:34 UTC | |
by pryrt (Abbot) on Jan 24, 2023 at 15:00 UTC | |
by LanX (Saint) on Jan 24, 2023 at 18:02 UTC |