I guess I've always assumed that beyond the conditions documented in perldoc perlsub an lvalue subroutine was treated as the modifiable value it represents.
For giggles I was messing around with local and lvalue subroutines and I'm wondering why a scalar accessed via an lvalue subroutine value seemingly can't be localized?
A quick look with Scalar::Util::refaddr tells me after the local() call I am indeed dealing with the same address still.
#!/usr/bin/perl use strict; use warnings; package Foo; our $level = 1; sub level :lvalue {$Foo::level} package main; print $Foo::level; { local Foo->level = 2; # Doesn't localize. # local $Foo::level = 2; # Does localize. print $Foo::level; } print $Foo::level; #Expected: 121 #Result: 122
In reply to Localize lvalue subroutine. by shanna
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |