http://qs321.pair.com?node_id=498422


in reply to Array Processing

I would look at the problem from another side ;-)

#!perl use strict; use warnings; local $, = "\n"; local $\ = "\n"; my @a = (1..5); foreach (reverse @a){ $a = pop @a; print "Deleted value: $a"; } print "\nDeleted Array Content: ", @a; __DATA__ Deleted value: 5 Deleted value: 4 Deleted value: 3 Deleted value: 2 Deleted value: 1 Deleted Array Content:

Working backwards and pop-ing, I don't change index of the remaining items in the array.

The deletion could even be conditional using splice as in:

#!perl use strict; use warnings; local $, = "\n"; local $\ = "\n"; my @a = (0..5); foreach (reverse @a){ next unless $_ % 2; splice(@a, $_, 1); print "Deleted value: $_"; } print "\nDeleted Array Content: ", @a; __DATA__ Deleted value: 5 Deleted value: 3 Deleted value: 1 Deleted Array Content: 0 2 4