package Defined; use strict; use warnings; sub TIESCALAR { my $class = shift; my $name = shift; my $self = { 'NAME' => $name, 'DEFINED' => undef, }; return bless ($self, $class); } sub FETCH { my $self = shift; my $name = $self->{'NAME'}; my @caller = caller; if (defined $self->{'DEFINED'}) { print STDERR "@caller -> $name defined\n"; } else { print STDERR "@caller -> $name undefined\n"; } } sub STORE { my $self = shift; my $value = shift; my $name = $self->{'NAME'}; my @caller = caller; $self->{'DEFINED'} = $value; print STDERR "@caller -> $name defined with value $value\n"; } 1;