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