http://qs321.pair.com?node_id=208945


in reply to $functions xor $methods

i don't have time to do the legwork, but it might be possible to use some magic combination of AUTOLOAD and goto &NAME to call the parent class if the function doesn't exist in the subclass.

hope that helps, Ovid

~Particle *accelerates*

Replies are listed 'Best First'.
Re: Re: $functions xor $methods
by BUU (Prior) on Oct 30, 2002 at 03:28 UTC
    Only problem is that it requires a hardcoded 'parent' value (unless theres some way to return that?)
    sub AUTOLOAD { if(defined &{__PARENT__::$AUTOLOAD}) { goto &{__PARENT__::$AUTOLOAD} } }
    (note i left out the part about getting the right value in $AUTOLOAD, chopping out the package and stuff)
      something like this seems to work and doesn't require hardcoded names. it just grabs the first parent method (in @ISA order) it finds:
      sub AUTOLOAD { no strict; my $METHOD; ($METHOD = $AUTOLOAD) =~ s/.*:://; foreach my $PARENT (@ISA) { if(defined &{$PARENT.'::'.$METHOD}) { goto &{$PARENT.'::'.$METHOD} } } }
      either this, or use Damian's NEXT module.

      cheers,
      Aldo

      King of Laziness, Wizard of Impatience, Lord of Hubris

      SUPER::$AUTOLOAD should work.