Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Is it ok to assign a popped value to a variable as shown.

by johngg (Abbot)
on Dec 05, 2011 at 15:28 UTC ( #941876=note: print w/ replies, xml ) Need Help??


in reply to Is it ok to assign a popped value to a variable as shown.

As others have mentioned, handling arrays like this in some sort of loop is a common idiom. Something that can trip you up is the distinction between "true" and "defined" which can terminate your loop early if you don't take care. Consider the two following snippets:-

knoppix@Microknoppix:~$ perl -Mstrict -wE ' > my @arr = ( 7, 28, -8, 0, 12, 67 ); > while ( my $val = shift @arr ) > { > say $val; > }' 7 28 -8 knoppix@Microknoppix:~$
knoppix@Microknoppix:~$ perl -Mstrict -wE ' > my @arr = ( 7, 28, -8, 0, 12, 67 ); > while ( defined( my $val = shift @arr ) ) > { > say $val; > }' 7 28 -8 0 12 67 knoppix@Microknoppix:~$

Note that in the first example, the loop terminates when accessing the fourth element. This is because the value of that element is zero which means the expression my $val = shift @arr tests as "false" so the while loop finishes earlier than you might expect. Adding a test for defined overcomes this problem in the second snippet.

I hope this is helpful.

Cheers,

JohnGG


Comment on Re: Is it ok to assign a popped value to a variable as shown.
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2014-09-22 00:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (176 votes), past polls