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 scope $foo is: file scope