in reply to test for subroutine existence

Seems like eval() works fine for you, but, if you simply want to check for a sub's existence without having to perform a call on it, just use defined() (or the implied defined):

You may also use defined(&func) to check whether subroutine &func has ever been defined. The return value is unaffected by any forward declarations of &foo. Note that a subroutine which is not defined may still be callable: its package may have an AUTOLOAD method that makes it spring into existence the first time that it is called -- see perlsub.

-fp