我正在Perl开发一个测试框架。作为测试的一部分,我可能需要为任何给定的测试添加前提条件或后置条件检查,但不一定适用于所有测试。到目前为止我已经有了这样的事情:
eval "&verify_precondition_TEST$n"; print $@ if $@;
不幸的是,如果该函数不存在,则输出“Undefined subroutine& verify_precondition_TEST1 called at …”。
解决方法
定义:
if (eval "defined(&verify_precondition_TEST$n)") { eval "&verify_precondition_TEST$n"; print $@ if $@; } else { print "verify_precondition_TEST$n does not exist\n"; }
编辑:嗯,我只想到了这个问题,但是用Leon Timmermans提出的象征性的参考,你不能做
if (defined(&{"verify_precondition_TEST$n"}) { &{"verify_precondition_TEST$n"}; print $@ if $@; } else { print "verify_precondition_TEST$n does not exist\n"; }
甚至严格?