develooper Front page | perl.perl5.porters | Postings from January 2000

Re: On Pseudohashes

Thread Previous | Thread Next
From:
Graham Barr
Date:
January 17, 2000 06:38
Subject:
Re: On Pseudohashes
Message ID:
20000117143549.S887@pobox.com
On Mon, Jan 17, 2000 at 03:28:03PM +0100, Raphael Manfredi wrote:
> Quoting tchrist@chthon.perl.com:
> :Tim, some time ago something came up about autoloading method calls
> :that bothered me in an MI scenario.  Seems to me you respondedi
> :similarly then.  I'm pretty sure it was the following inheritance
> :scenario:
> :
> :                A
> :                 \
> :                  B   C         @B::ISA = ('A');
> :                   \ /
> :                    D           @D::ISA = ('B', 'C');
> :
> :Suppose that each of those classes were using autoloading to generate
> :its attribute accessors.  If D->m() is called, and that method m()
> :is really supposed to be handled iby C, there's no way for B's
> :autoload to "super" it over to C.  Instead, B::SUPER just gets to
> :ascend to A--which doesn't help.  You can never renege on an AUTOLOAD
> :so that Perl's method lookup would treat that hit as a miss and
> :then go on to inspect sibling branches of the tree.
> 
> I fail to see how AUTOLOAD is connected to this problem. Even if B did
> not have an autoloaded m(), then A's m() would be used, since Perl
> looks up the tree starting with B, in a depth-first order.

If no package declared m() then a search for AUTOLOAD would be
done. AUTOLOAD would be looked up in D B A C, so if B defined AUTOLOAD
and D did not then B::AUTOLOAD would be called.

Graham.

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