BEGIN { package Testtie; use Tie::Scalar; use strict; sub TIESCALAR { my $class = shift; my $var = shift; bless \$var, $class; } sub FETCH { my ( $self ) = @_; print "FETCHING ${$self}\n"; return ${$self}; } sub STORE { my $self = shift; ${$self} = shift;; print "STORING ${$self}\n"; } } my $f; tie $f, 'Testtie'; $f = 'foo'; print $f,"\n"; $f = \'foo'; print $f,"\n"; print ref($f),"\n"; print ${$f},"\n"; $f = sub {return "running sub\n"}; print $f,"\n"; print ref($f),"\n"; print &{$f},"\n"; #### STORING foo FETCHING foo foo STORING SCALAR(0x811a3ec) FETCHING SCALAR(0x811a3ec) SCALAR(0x811a3ec) FETCHING SCALAR(0x811a3ec) SCALAR foo STORING CODE(0x811a398) FETCHING CODE(0x811a398) CODE(0x811a398) FETCHING CODE(0x811a398) CODE running sub