package Base; sub AUTOLOAD { (my $meth = our $AUTOLOAD) =~ s/([^:]+)$/$1/; if ( $meth =~ /^is_/ ) { return; } # ???? } package Foo; our @ISA = qw( Base ); sub is_foo { 1 } package Bar; our @ISA = qw( Base ); sub is_bar { 1 } # And so forth