a(); b(); print "$var\n"; sub a { local $var = "a\n"; c(); } sub b { local $var = "b\n"; c(); } sub c { # i'm pleasing you to print a or b print "var: $var"; } #### $b = new SubMaker(); sub a { my $var; $b->make_sub("subname"); subname(); }