Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^4: self-feeding infinite loop

by syphilis (Canon)
on Aug 18, 2007 at 14:33 UTC ( #633486=note: print w/ replies, xml ) Need Help??


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


Comment on Re^4: self-feeding infinite loop
Download Code
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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://633486]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (13)
As of 2015-07-31 18:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (280 votes), past polls