> delete returns a list of key value pairs of what was deleted
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
|