package NewStdScalar; require Tie::Scalar; @ISA = qw(Tie::StdScalar); sub FETCH { return ${+shift}++ } package main; $\="\n"; $,="\t"; tie our $scalar, 'NewStdScalar'; sub prsc {print $scalar }; $scalar=0; prsc(); { local $scalar=42; # untie $scalar; # uncomment this to make it work prsc(); prsc(); prsc(); print $scalar; } prsc(); __DATA__ 0 42 43 44 45 1