Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Variable scope in while loop

by davido (Archbishop)
on Dec 19, 2012 at 22:18 UTC ( #1009649=note: print w/replies, xml ) Need Help??

in reply to Variable scope in while loop

In the first case, the scope of the $number variable is one iteration. Upon the next iteration, a new $number is created, and then tested whether or not it is equal to 10. It never will be; it's brand-spankin'-new.

On the second version, it should be pretty obvious that $number is never being declared, which is a strictures violation.

The third example is the only one that will work, because the lifetime of the $number variable needs to persist past the end of each iteration. The conditional test takes place at the beginning of the next iteration, so the variable's life must outlive the block in order to be tested.

You might be thinking of while( my $input = <DATA> ) { .... }, which works because the expression populates $input from the <DATA> iterator before the conditional is tested.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1009649]
[Lotus1]: you can't but you can request to have it deleted.
[Lotus1]: you can edit it as long as you were logged in when you submitted it

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2017-01-17 13:20 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (156 votes). Check out past polls.