Buffers Files Tools Edit Search Perl Help
#!/usr/bin/perl -w
use strict;
$|++;
{
package MyTie;
sub TIEHASH {
my $class = shift;
my %value;
my $self = { value => \%value };
bless $self, $class;
warn "blessing $self\n";
# $self->STORE("ALRM", sub { warn "BONG" });
$self;
}
sub FETCH {
my $self = shift;
my $key = shift;
my $value = $self->{value}->{$key};
warn "$self is fetching $key as $value\n";
$value;
}
sub STORE {
my $self = shift;
my $key = shift;
my $newvalue = shift;
warn "$self is storing $newvalue in $key\n";
$self->{value}->{$key} = $newvalue;
}
sub DELETE {
my $self = shift;
my $key = shift;
warn "$self is deleting $key\n";
delete $self->{value}->{$key};
}
sub CLEAR {
my $self = shift;
warn "clearing $self\n";
%{$self->{value}} = ();
}
sub EXISTS {
my $self = shift;
my $key = shift;
warn "checking existance of $key in $self\n";
exists $self->{value}->{$key};
}
sub FIRSTKEY {
my $self = shift;
warn "calling firstkey on $self\n";
my $toss = keys %{$self->{value}};
each %{$self->{value}};
}
sub NEXTKEY {
my $self = shift;
warn "calling nextkey on $self\n";
each %{$self->{value}};
}
sub DESTROY {
my $self = shift;
warn "calling destroy on $self\n";
$self->SUPER::DESTROY;
}
}
tie %::SIG, MyTie::;
$SIG{ALRM} = sub { warn "bing!\n" };
alarm(1);
select(undef, undef, undef, 3);
####
blessing MyTie=HASH(0x80d9290)
MyTie=HASH(0x80d9290) is storing CODE(0x80d91e8) in ALRM
bing!
calling destroy on MyTie=HASH(0x80d9290)
####
blessing MyTie=HASH(0x80d92ec)
MyTie=HASH(0x80d92ec) is storing CODE(0x80d2c30) in ALRM
Alarm clock