This may or may not have been posted before, but someone mentioned in chat just now that it would be nice if delete in array context worked like splicing out the element. I figured, why not write a small function to do that? Here it is, with all the test situations I could think of covered:

use strict; use warnings; my @arr; for (0, 2, 4, 4.1, 5, -1, -5, -6) { @arr = (0,1,2,3,4); deleteA(\@arr, $_); print "Deleted $_: @arr\n"; } sub deleteA { my ($arr, $i) = @_; return if int $i > $#$arr || int $i < $#$arr * -1 - 1; splice(@$arr, $i, 1); }

I suppose you could just use splice directly, but the function takes care of things that cause splice to generate an error, like falling outside of bounds.

Replies are listed 'Best First'.
Re: Delete for array:
by zentara (Cardinal) on Nov 27, 2011 at 12:42 UTC
      Well, it's obviously not going to be efficient to remove one item at a time from a huge array via splice. But I would think that in those situations you'd use a different method.