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