sub DESTROY { my $self = shift; ... do class specific stuff ... $self->SUPER::DESTROY if $self->can("SUPER::DESTROY"); } #### sub DESTROY { my $self = shift; .... foreach my $class (@ISA) { my $destroy = "${class}::DESTROY"; $self->$destroy if $self->can($destroy); } }