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' }
In reply to Re: Can we determine when the garbage collector works?
by Juerd
in thread Can we determine when the garbage collector works?
by Doraemon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |