Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^6: Hard syntax error or disambiguable parsing?

by ack (Deacon)
on Jan 29, 2009 at 16:05 UTC ( [id://739947]=note: print w/replies, xml ) Need Help??


in reply to Re^5: Hard syntax error or disambiguable parsing?
in thread Hard syntax error or disambiguable parsing?

I just tried the following code...which is a variation on what you show.

#!/user/bin/perl use warnings; use strict; my $i = 10; print "$i\n"; foreach $i (0..5){ print "$i\n"; } # end foreach $i loop print "$i\n"; exit(0);

It prints the following:

10 0 1 2 3 4 5 10

This is exactly what I believe the Camel says it should do since the loop variable is, if I recall correctly, always created anew as a lexical whose scope is the subsequent loop block (even though it appears to be created before the loop block). The output above seems to confirm that.

I, like BrowserUk, however am a bit perplexed by the inability to use the $i[0] construct as the loop variable.

Is it because the $i[0] implies a list structure which does not get created (via, for example, autovivification...spelling?)?

ack Albuquerque, NM

Replies are listed 'Best First'.
Re^7: Hard syntax error or disambiguable parsing?
by JavaFan (Canon) on Jan 29, 2009 at 16:20 UTC
    Actually, the loop variable will be lexical if there's a current lexical variable with that name, otherwise it will be local variable (with a local scope).
    my $i = 10; our $j = 10; sub print_it {say "[$i, $j]"} print_it; foreach $i (0 .. 5) {print_it;} print_it; foreach $j (0 .. 5) {print_it;} print_it; __END__ [10, 10] [10, 10] [10, 10] [10, 10] [10, 10] [10, 10] [10, 10] [10, 10] [10, 0] [10, 1] [10, 2] [10, 3] [10, 4] [10, 5] [10, 10]
    As you can see, $i is lexical, and its value isn't visible outside the loop. But $j is a package variable, who gets a localized value inside the loop. And then its value is visible outside the loop.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (1)
As of 2024-04-25 04:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found