package SUPERB; use Carp; sub AUTOLOAD { my $self = shift; my $caller = caller; $AUTOLOAD =~ s/.*:://; for my $method ($AUTOLOAD, "AUTOLOAD") { my @queue = @{"$caller\::ISA"}; while (@queue) { my $class = shift @queue; if ( *{"$class\::$method"}{CODE} ) { my $call = "$class\::$AUTOLOAD"; return $self->$call(@_); } else { push @queue, @{"$class\::ISA"}; } } } my $class = ref $self || $self; croak qq[Can't locate object method "$AUTOLOAD" via package "$class"]; } 1;