{ package Some::Class; sub new { my $self = bless {}, shift; print "Object created.\n"; return $self; } sub DESTROY { print "Object destroyed.\n"; } } print "1\n"; for (1 .. 3) { print "2\n"; my $foo = Some::Class->new; print "3\n"; } print "4\n"; __END__ 1 2 Object created. 3 Object destroyed. 2 Object created. 3 Object destroyed. 2 Object created. 3 Object destroyed. 4 #### use Tie::Scalar; { package Some::Class; our @ISA = qw(Tie::StdScalar); sub DESTROY { print "Object destroyed.\n"; } } if (1) { print "1\n"; # my $foo = 3; tie my $foo, 'Some::Class'; $foo = 3; print "2\n"; } print "3\n"; __END__ 1 2 Object destroyed. 3