use strict qw(vars subs); my $name; { my $name = 'red'; *$name = sub { "@_" }; } { my $name = 'blue'; *$name = sub { "@_" }; } $name = ''; print red(), "\n"; print blue(), "\n"; __END__ #### use strict qw(vars subs); { my $name; { my $name = 'red'; *$name = sub { "@_" }; } { my $name = 'blue'; *$name = sub { "@_" }; } *foo = sub { print red($name), "\n"; print blue($name), "\n"; }; $name = 'another wrinkle'; } foo(); print red('hi mom'); __END__ another wrinkle another wrinkle hi mom