in reply to Can we determine when the garbage collector works?

When an object is destroyed (garbage collected), its DESTROY method is called.

{ 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
You can tie a variable to an object.
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
    Suprisingly, i just realized i haven't tried implementing OOP in Perl (although already done it in PHP, Javascript(?), C++, Java).
    Anyway i'll try it. Thanx a lot :)
    Perl might just be another bright shining pearl...