Yes and no.
delete returns also key value pairs that are in the slice but didn't exist before, now with an undef value.
DB<1> @h{a..c}=1..3 DB<2> x delete %h{c,d} 0 'c' 1 3 2 'd' 3 undef DB<4> x delete @h{a,d} 0 1 1 undef DB<5>
This means you can't use delete to calculate the intersection of two sets of keys. (Well you can, but only with detours).
This is a missed opportunity with delete %h{LIST} we could have implemented sets via hashes.
> Not clear what a corresponding exists feature would do
Probably exactly the same thing like with a classic slice.
But exists SLICE in scalar context could return the number of existing elements. This could be equally used to calculate any or all .
Well this kind of would break the symmetry to delete SLICE with only returns the last element in the list. But this is a pretty useless feature anyway IMHO
Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery
In reply to Re^6: Why doesn't exist work with hash slices?
by LanX
in thread Why doesn't exist work with hash slices?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |