Package::Name->can('function')
или
*Package::Name::function{CODE}
# or no strict; *{ "Package::Name::$function" }{CODE}
или просто жить с исключением. Если вы вызываете функцию в eval и установлена $ @, то вы не можете вызвать функцию.
Наконец, звучит так, что вы можете захотеть Test :: Class вместо того, чтобы писать это самостоятельно.
Редактировать: defined &function_name
(или вариант no strict; defined &{ $function_name }
), как упоминалось в других ответах, выглядит наилучшим образом. UNIVERSAL :: can лучше всего подходит для того, что вы собираетесь вызывать как метод (стилистически), и зачем возиться с таблицей символов, когда Perl дает вам синтаксис для выполнения того, что вы хотите.
Обучение ++:)