sub find_funcs { my $class = shift; my $meth = shift; exists ${$class}{$meth}{SUB}; } sub dispatch_method { my $self = shift; my $meth = shift; my @args = @_; no strict 'refs'; my $pkg = ref($self); # Recursively find the packages that have the $meth function defined # Call them in whatever order you want to define }