in reply to Re^5: Array Processing
in thread Array Processing

Whoa -- my sincere apologies!  I can only surmise that I read it too quickly and my fingers typed in the idiom that they were used to.  So I sheepishly retract what I said about your infinite loop:
my @a = qw(1 2 3 4 5); while ((my $a, @a) = @a) { printf "\$a is now '%s', and \@a is now (%s)\n", $a, join(')(',@a) +; } # Output ... $a is now 1, and @a is now (2)(3)(4)(5) $a is now 2, and @a is now (3)(4)(5) $a is now 3, and @a is now (4)(5) $a is now 4, and @a is now (5) $a is now 5, and @a is now ()
My initial reaction was that it's wasteful to reassign the entire array, but then I saw you had already noted this inefficiency.

And yes, it's a reasonable observation about the possibility of an undef element, but in most cases one doesn't need to deal with arrays containing undefined values.  Then of course you'd be better off with something like:

while (@a) { my $a = shift @a; # Use $a ... }
Or what BUU suggests next ... :-)