develooper Front page | perl.perl6.language | Postings from February 2001

Re: Garbage collection (was Re: JWZ on s/Java/Perl/)

Thread Previous | Thread Next
From:
Nicholas Clark
Date:
February 13, 2001 10:35
Subject:
Re: Garbage collection (was Re: JWZ on s/Java/Perl/)
Message ID:
20010213183544.R3652@plum.flirble.org
On Tue, Feb 13, 2001 at 10:32:26AM -0800, Peter Scott wrote:
> At 01:16 PM 2/13/01 -0500, James Mastros wrote:
> >On Tue, Feb 13, 2001 at 01:09:11PM -0500, John Porter wrote:
> >Certainly AUTOLOAD gets
> > > called if DESTROY is called but not defined ... just
> > > like any other method.
> >The idea is [for Larry] to declare "no, it isn't".  Otherwise, you have to
> >do refcounting (or somthing like it) for DESTROY to get called at the right
> >time if the class (or any superclass) has an AUTOLOAD, which is expensive.
> >
> >Perhaps you could declare, but not define, DESTROY to have AUTOLOAD called
> >for DESTROY, and have DESTROY called as soon as the last ref goes out of
> >scope.  (IE have a sub DESTROY; line.)

I like this idea, and would have suggested it except that James Mastros got
there first. It is a special case "no AUTOLOAD of DESTROY by default"
but it might be quite a win.


> This may be a naive question, but what is the benefit - aside from 
> consistency, and we don't need to rehash the litany on that - to AUTOLOAD 
> getting called for DESTROY?  I've never actually seen any code that makes 
> use of it.  I have grown somewhat tired of writing, and teaching, "return 
> if $AUTOLOAD =~ /:DESTROY$/", however.

Doesn't

  sub DESTROY {}

have the same effect but with less typing?

Nicholas Clark

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About