package TieAccess; use strict; use warnings; use Carp; use Tie::Scalar; our @ISA = qw(Tie::StdScalar); my %instances; sub TIESCALAR { my $class = shift; my $var; my $self = bless \$var, $class; $instances{$self} = shift; carp "\$$instances{$self}: TIESCALAR"; return $self; } sub FETCH { my $self = shift; carp "\$$instances{$self}: FETCH ${$self}"; return ${$self}; } sub STORE { my( $self, $value ) = @_; ${$self} = $value; carp "\$$instances{$self}: STORE ${$self}"; return ${$self}; } sub DESTROY { my $self = shift; carp "\$$instances{$self}: DESTROY"; delete $instances{$self}; } 1; package main; my $variable; tie $variable, "TieAccess", "variable"; $variable = 100; print "$variable\n";