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

Re: On Pseudohashes

Thread Previous | Thread Next
Graham Barr
January 17, 2000 06:38
Re: On Pseudohashes
Message ID:
On Mon, Jan 17, 2000 at 03:28:03PM +0100, Raphael Manfredi wrote:
> Quoting
> :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.


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About