in reply to AUTOLOAD cascade

You can just prepend "SUPER::" to the method name and call it on the object again:
if ($method eq 'child_method') { print "Child->child_method\n"; } else { $method = "SUPER::$method"; $self->$method(@_); }
This works just fine for me, and does all the appropriate AUTOLOAD business.

package Child; @ISA = qw(Parent); sub AUTOLOAD { my $self = shift; (my $method = $AUTOLOAD) =~ s/.*:://; return if $method eq 'DESTROY'; if ($method eq 'child_method') { print "Child->child_method\n"; } else { $method = "SUPER::$method"; $self->$method(@_); } } ############### package Parent; sub AUTOLOAD { my $self = shift; (my $method = $AUTOLOAD) =~ s/.*:://; return if $method eq 'DESTROY'; print "Parent->$method\n"; } ############# package main; Child->child_method; Child->blah; __END__ Child->child_method Parent->blah

blokhead