http://www.perlmonks.org?node_id=958207


in reply to Re: arrays: shifting in while loop
in thread arrays: shifting in while loop


Hmm, really? I always thought the while-loop EXPR was re-evaluated after each iteration:
my @a = (3, 4); while (do { say "yo"; @a }) { say "hi mom"; shift @a; # no explicit loop break out } say "bye mom"; __END__ yo hi mom yo hi mom yo bye mom

Replies are listed 'Best First'.
Re^3: arrays: shifting in while loop
by AnomalousMonk (Archbishop) on Mar 07, 2012 at 15:17 UTC
    ... the while-loop EXPR [is] re-evaluated after each iteration...

    It is, but I was trying to make a (perhaps rather trivial) point with regard to continued execution of the loop body (which I've tried to clarify in the original reply) as exemplified below.

    >perl -wMstrict -le "my @ra = (9, 8, 7); ;; while (@ra) { print 0+@ra, ' in @ra'; shift @ra; print 0+@ra, ' in @ra'; shift @ra; print 0+@ra, ' in @ra'; shift @ra; print 0+@ra, ' in @ra'; shift @ra; print 0+@ra, ' in @ra'; shift @ra; print 0+@ra, ' in @ra'; } " 3 in @ra 2 in @ra 1 in @ra 0 in @ra 0 in @ra 0 in @ra
      Great, I knew I missed something from your original post.