use strict; use vars qw($obj); use Carp qw(carp croak cluck confess); use Cwd; sub TIESCALAR { my $var; carp "tie:\t",\$var," = $_[0]\n"; bless \$var => shift; } sub FETCH { carp "fetch:\t$_[0] == ${$_[0]}\n"; ${$_[0]} } sub STORE { carp "store:\t$_[0] = $_[1]\n"; ${$_[0]} = $_[1]} tie $obj => 'main'; $obj = 'foo'; { my $x = 1; my $y = $obj; local $obj = 'bar'; } ### OUTPUT ### tie: SCALAR(0x8106d78) = main main::TIESCALAR('main') called at - line 10 store: main=SCALAR(0x8106d78) = foo main::STORE('main=SCALAR(0x8106d78)', 'foo') called at - line 11 fetch: main=SCALAR(0x8106d78) == foo main::FETCH('main=SCALAR(0x8106d78)') called at - line 14 fetch: main=SCALAR(0x8106d78) == foo main::FETCH('main=SCALAR(0x8106d78)') called at - line 15 store: main=SCALAR(0x8106d78) = main::STORE('main=SCALAR(0x8106d78)', undef) called at - line 15 store: main=SCALAR(0x8106d78) = bar main::STORE('main=SCALAR(0x8106d78)', 'bar') called at - line 15 store: main=SCALAR(0x8106d78) = foo main::STORE('main=SCALAR(0x8106d78)', 'foo') called at - line 13