LanX has asked for the wisdom of the Perl Monks concerning the following question:
the primitive idea behind local is that the current value is pushed to a stack and is restored when the scope finishes.
{ push @stack,$scalar; $scalar=undef; ... some code... $scalar=shift @stack; }
But it's not that easy to simulate local for lexicals, if the var is actually tied.
Consider this example which works very well for package-vars WITHOUT interfering with tie:
package NewStdScalar; require Tie::Scalar; @ISA = qw(Tie::StdScalar); sub FETCH { return ${+shift}++ } package main; tie our $scalar, 'NewStdScalar'; $scalar=0; print $scalar; # 0 { local $scalar="---"; # --- print $scalar; } print $scalar; # 1
So is it possible to get this behavior for lexicals even if they are tied?
I'd like to implement this just with CORE-moduls, so PadWalker is not an option.
Cheers Rolf
PS: While I'm writing this I'm getting an idea how to achieve this ... but I'm open for every suggestion! :) UPDATE: Never mind, didn't work...
|
|---|