It looks like you're trying to get a subref for a method. Hence, the use of
$proto->package_name. A much simpler solution is
my $subref = $proto->can( $name );
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?