sub AUTOLOAD { return if $AUTOLOAD eq __PACKAGE__.'::'.'DESTROY'; my $self = shift; (my $func = $AUTOLOAD) =~ s/.*:://; if ($self->{extension}) { my $method = join '::', __PACKAGE__, $self->{extension}, $func; $method->($self,@_); } else { die "method $func not defined for $self\n"; }; }