in reply to Can we determine when the garbage collector works?
When an object is destroyed (garbage collected), its DESTROY method is called.
You can tie a variable to an object.{ 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
Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Can we determine when the garbage collector works?
by Doraemon (Beadle) on May 11, 2004 at 14:54 UTC |