use strict; use warnings; use Data::Dump qw/pp dd/; $\="\n"; our $PHASE=0; { if ( my $x = bless {name=>"extra block"}, "TEST" ) { $PHASE=1; print $x; } } # DESTRUCTION $PHASE=2; # line 16 if ( my $x = bless {name=>"head if"}, "TEST" ) { $PHASE=3; print $x; } # NO DESTRUCTION # --- uncomment for compile-time error # print $x; print ""; $PHASE=4; print ""; # line 32 package TEST; use Carp; sub DESTROY { my ( $self ) = @_ ; carp "DESTROY {name}> "; } #### C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/berny_open.pl DESTROY at d:/tmp/pm/berny_open.pl line 16. DESTROY at d:/tmp/pm/berny_open.pl line 32. TEST=HASH(0x1ca7e8) TEST=HASH(0x1ca8f0)