package A; ... sub DESTROY { warn 'A::DESTROY' ... return; } package B; ... sub DESTROY { warn 'B::DESTROY'; my $self = shift; $self->SUPER::DESTROY; return; } #### package A; ... sub DESTROY { ... warn 'A::DESTROY' return; } package B; ... sub DESTROY { my $self = shift; $self->SUPER::DESTROY; warn 'B::DESTROY'; return; }