package Bio::CDAT::VOS::Taxon; use strict; sub TIESCALAR { my ( $class, $taxon, $handlers ) = @_; my $self = { 'taxon' => $taxon, 'handlers' => $handlers, }; return bless $self, $class; } sub FETCH { $_[0]->{'taxon'} } sub STORE { my ( $self, $value ) = @_; for my $handler ( @{ $self->{'handlers'} } ) { $handler->( $value ); } $self->{'taxon'} = $value; } sub DESTROY { my $self = shift; for my $handler ( @{ $self->{'handlers'} } ) { $handler->( undef ); } undef ( %$self ); } 1;