package Spy;
use strict;
sub TIESCALAR
{
my ($Pkg,$Name,$Val)=@_;
my $Obj=[$Name,$Val];
return bless $Obj,$Pkg;
}
sub FETCH
{
my ($Obj)=@_;
print STDERR "Fetched ",$Obj->[1]||'undef'," from ",$Obj->[0],"\n";
return $Obj->[1];
}
sub STORE
{
my ($Obj,$Val)=@_;
print STDERR "Stored ",$Val||'undef'," in ",$Obj->[0],"\n";
return $Obj->[1]=$Val;
}
1;
####
#!/usr/bin/perl -w
use strict;
use Spy;
my ($Var1,$Var2);
tie $Var1,'Spy','Var1';
tie $Var2,'Spy','Var2';
($Var1,$Var2)=(37332,666);
print "Assigning \$Var2 to \$Var1, result: ", $Var1=$Var2,"\n";
# Humming 'Twilight Zone'
for $Var2 (1..5)
{
$Var1=$Var2;
print STDERR "$Var1\n";
$Var2="Test";
};
print "$Var2\n";
####
martijnb@xxx$ ./test
Stored 37332 in Var1
Stored 666 in Var2
Fetched 666 from Var2
Stored 666 in Var1
Fetched 666 from Var1
Assigning $Var2 to $Var1, result: 666
Stored 1 in Var1
Fetched 1 from Var1
1
Stored 2 in Var1
Fetched 2 from Var1
2
Stored 3 in Var1
Fetched 3 from Var1
3
Stored 4 in Var1
Fetched 4 from Var1
4
Stored 5 in Var1
Fetched 5 from Var1
5
Fetched 666 from Var2
666