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?