{ package SelfRef; sub new { my $self_ref; bless \($self_ref = \$self_ref), shift; }; sub DESTROY { print "destroy handler in phase 2 GC\n"; }; }; SelfRef->new; END { print "end block\n" }; use subs 'exit'; sub exit { print "overrided exit(@_)\n"; CORE::exit(@_); } exit(0); __END__ # produces overrided exit(0) end block destroy handler in phase 2 GC