use strict; use warnings; package Blubb; sub new { my $this = bless {a=>42}; $this->{circular} = $this; } sub DESTROY { warn "DESTROY"; } package MAIN; my $b = Blubb->new; { no warnings 'redefine'; my $orig= \&Blubb::DESTROY; *Blubb::DESTROY = sub { $orig->(@_); warn "END"; }; } #### DESTROY at c:/tmp/pm/destruct_end.pl line 12 during global destruction. END at c:/tmp/pm/destruct_end.pl line 27 during global destruction.