in reply to Re^2: Type globs, strict, and lexical variables
in thread Type globs, strict, and lexical variables

strict won't let you do that.
use strict; sub test { my $f = "boot"; local *tmp = \$f; print("$tmp\n"); # boot our $tmp = "loop"; print("$tmp\n"); # loop test2(); print("$tmp\n"); # loop } sub test2 { #$tmp = "test2 did it"; # XXX strict error my $tmp = "test2 did it"; # lex var alternative local our $tmp = "test2 did it"; # pkg var alternative } test();

Yes, test2 can change the value of $tmp, but only if test2 doesn't properly localize its variables. Perl gives you plenty of ways of shooting yourself in the foot, but they can all be avoided easily and safely with a little care. In this case, that means local shoule be used whenever our is used, unless there is a need to modify the variable in the parent scope.