Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

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]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2018-04-25 13:32 GMT
Find Nodes?
    Voting Booth?