Fra*_*ozo 4 perl runtime compile-time
我正在使用一个模块,该模块利用一些原型来允许代码块。例如:
sub SomeSub (&) { ... }
Run Code Online (Sandbox Code Playgroud)
由于原型仅在编译时解析时才有效,如果模块在编译时未解析,我想抛出警告甚至致命。例如:
require MyModule; # Prototypes in MyModule won't be parsed correctly
Run Code Online (Sandbox Code Playgroud)
有没有办法检测某些东西是否在 Perl 的编译或运行时/阶段被执行?
如果您在 Perl 5.14 或更高版本上运行,则可以使用${^GLOBAL_PHASE}包含当前编译器状态的特殊变量。这是一个例子。
use strict;
use warnings;
sub foo {
if ( ${^GLOBAL_PHASE} eq 'START' ) {
print "all's good\n";
} else {
print "not in compile-time!\n";
}
}
BEGIN {
foo();
};
foo();
Run Code Online (Sandbox Code Playgroud)
输出:
all's good
not in compile-time!
Run Code Online (Sandbox Code Playgroud)