eval { something_that_might_die(); }; print "Caught: $@" if $@; #### die "exception!\n"; #### package Thing; sub new { bless {}, shift } sub DESTROY { my ($self) = @_; print "$self is dying\n"; die "$self died\n"; } package main; eval { my $b = Thing->new(); undef $b; }; print "Caught: $@\n" if $@; #### Thing=HASH(0x811b24c) is dying #### Thing=HASH(0x811b24c) is dying! Caught: (in cleanup) Thing=HASH(0x811b24c) died