in reply to Lexical scoping like a fox
What this snippet shows is that the inner $foo remains defined to the subroutine in the inner scope even though the program has passed on through it and down to the other scopes. You could mention that this is a bit like a C static if you want ...my $foo = "file scope"; { my $foo = "outer scope"; { my $foo = "inner scope"; print " \$foo is: $foo\n"; sub innerfoo() { $foo = "(Innerfoo) \$foo is: $foo\n"; print $foo; } } print " \$foo is: $foo\n"; innerfoo(); } print "\$foo is: $foo\n"; innerfoo(); innerfoo(); print "\$foo is: $foo\n"; __output__ $foo is: inner scope $foo is: outer scope (Innerfoo) $foo is: inner scope $foo is: file scope (Innerfoo) $foo is: (Innerfoo) $foo is: inner scope (Innerfoo) $foo is: (Innerfoo) $foo is: (Innerfoo) $foo is: inner scop +e $foo is: file scope
Dingus
|
|---|