gpt4 book ai didi

perl - 如何确定 Perl 函数在运行时是否存在?

转载 作者:行者123 更新时间:2023-12-03 02:55:24 25 4
gpt4 key购买 nike

我正在 Perl 中开发一个测试框架。作为测试的一部分,我可能需要为任何给定的测试添加前置条件或后置条件检查,但不一定为所有测试添加前置条件或后置条件检查。到目前为止我得到的是这样的:

eval "&verify_precondition_TEST$n";
print $@ if $@;

不幸的是,如果该函数不存在,则输出“未定义的子例程 &verify_precondition_TEST1 在...调用”。

如何在尝试调用该函数之前提前确定该函数是否存在?

最佳答案

Package::Name->can('function')

*Package::Name::function{CODE}

# or no strict; *{ "Package::Name::$function" }{CODE}

或者只是接受异常(exception)。如果您在 eval 中调用该函数并且设置了 $@,则您无法调用该函数。

最后,听起来您可能想要 Test::Class 而不是自己编写它。

编辑:define &function_name (或 no strict; Defined &{ $function_name } 变体),正如其他答案中提到的,看起来是最好的方法。 UNIVERSAL::can 最适合您要作为方法(风格上)调用的东西,当 Perl 为您提供语法来执行您想要的操作时,为什么还要费心去搞乱符号表呢。

学习++:)

关于perl - 如何确定 Perl 函数在运行时是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com