in reply to Using an "outer" lexical in a sub?
As you discovered, lexical vars can be globals too :)
Now try the following snippets:
#!/usr/bin/perl #use strict; use warnings; sub foo { $n++; } $n = 10; print "$n\n"; # 10 foo(); print "$n\n"; # 11
#!/usr/bin/perl use strict; use warnings; sub foo { $n++; } # Compile-time (strict) error! our $n = 10; print "$n\n"; # 10 foo(); print "$n\n"; # 11
#!/usr/bin/perl use strict; use warnings; # "our $n;" disables "use strict 'vars';" for $n for the # remainder of the lexical scope in which it is located. sub foo { our $n; $n++; } our $n = 10; print "$n\n"; # 10 foo(); print "$n\n"; # 11
#!/usr/bin/perl use strict; use warnings; sub foo { my $n; $n++; } # Different $n! my $n = 10; print "$n\n"; # 10 foo(); print "$n\n"; # 10
#!/usr/bin/perl use strict; use warnings; sub foo { $n++; } # Compile-time (strict) error! my $n = 10; print "$n\n"; foo(); print "$n\n";
#!/usr/bin/perl use strict; use warnings; my $n = 10; sub foo { $n++; } print "$n\n"; # 10 foo(); print "$n\n"; # 11
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Using an "outer" lexical in a sub?
by cornballer (Novice) on Nov 01, 2006 at 20:51 UTC | |
by ikegami (Patriarch) on Nov 01, 2006 at 21:42 UTC | |
by Joost (Canon) on Nov 01, 2006 at 21:52 UTC | |
by Joost (Canon) on Nov 01, 2006 at 21:00 UTC | |
by tilly (Archbishop) on Nov 01, 2006 at 23:36 UTC | |
by Joost (Canon) on Nov 01, 2006 at 23:49 UTC | |
by tilly (Archbishop) on Nov 02, 2006 at 00:09 UTC | |
|