#!/usr/bin/perl -w use strict; use warnings; use Error qw(:try); for (1..3) { my $x = Foo->new(); try { try { print "$_: $x\n" }; }; } END { warn("interpreter exit\n") } package Foo; sub new { return bless {}, shift } sub DESTROY { warn("Foo::DESTROY\n") } #### 1: Foo=HASH(0x80f6084) 2: Foo=HASH(0x813b750) 3: Foo=HASH(0x815a0f0) interpreter exit Foo::DESTROY Foo::DESTROY Foo::DESTROY #### 1: Foo=HASH(0x81981f8) Foo::DESTROY 2: Foo=HASH(0x81981f8) Foo::DESTROY 3: Foo=HASH(0x81981f8) Foo::DESTROY interpreter exit