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