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


in reply to Re^3: self-feeding infinite loop
in thread self-feeding infinite loop

But you're definitely in the territory of "unpredictable behaviour"

I may be being somewhat picky (or I may even be downright wrong), but I don't see any "unpredictable behaviour" there. I agree that one needs to be careful when modifying an array by iterating over the same array, but the following does behave predictably:
use strict; use warnings; my @array = ('a'); foreach (@array) { push @array,'a'; print"@array\n"; sleep(1); # so we can absorb what's happening }
Cheers,
Rob

Replies are listed 'Best First'.
Re^5: self-feeding infinite loop
by Errto (Vicar) on Aug 18, 2007 at 18:03 UTC
    It's not "unpredictable" in the sense of being random but it is undefined in the sense that it is not specified in the documentation and could potentially change in a future release. Quoting perlsyn:
    If any part of LIST is an array, foreach will get very confused if you add or remove elements within the loop body, for example with splice. So don't do that.
    I should add for the record that I once asked the same question myself.