/usr/local/CPAN/Attribute-Handlers-Prospective/Loud.pm
package Loud;
use Attribute::Handlers::Prospective;
sub UNIVERSAL::Loud :ATTR(SCALAR,RUN) {
my ($pkg,$glob,$ref,$data,$phase) = @_;
tie $$ref, 'Loud', '$'.*{$glob}{NAME};
}
sub TIESCALAR {
my ($class, $name) = @_;
print STDERR "creating $name\n";
bless { name=>$name }
}
sub STORE {
my ($self, $newval) = @_;
print STDERR "storing $newval in $self->{name}\n";
$self->{value} = $newval;
}
sub FETCH {
my ($self) = @_;
print STDERR "evaluating $self->{name} (as $self->{value})\n";
return $self->{value};
}
sub DESTROY {
my ($self) = @_;
print STDERR "destroying $self->{name}\n";
}
1;