我正在使用一个模块,它利用一些原型来允许代码块.例如:
sub SomeSub (&) { ... }
由于原型只在编译时解析时才有效,如果在编译时没有解析模块,我想发出警告甚至是致命的.例如:
require MyModule; # Prototypes in MyModule won't be parsed correctly
有没有办法检测Perl中的编译或运行时/阶段是否正在执行某些操作?
解决方法
在5.14之前(或之前或之后),您可以:
package Foo; BEGIN { use warnings 'FATAL' => 'all'; eval 'INIT{} 1' or die "Module must be loaded during global compilation\n"; }
但是(和${^ GLOBAL_PHASE})并没有完全检查你想知道什么,这是否正在编译或运行包含use / require语句的代码.