package Base; sub init { my $class = shift; my $is_func = $class.'::is_'.lc($class); no strict 'refs'; *$is_func = sub { return 1 }; } ... package Foo; our @ISA = qw( Base ); __PACKAGE__->init(); ... package Bar; our @ISA = qw( Base ); __PACKAGE__->init();