Eva*_*oll 1 perl metaprogramming pragma package
假设我想确保实现接口的人具有特定的实验性功能,
package Foo {
use experimental "signatures";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法确定 Foo 启用了哪些功能,或者更具体地说是“实验性功能”?
不,因为 Foo 没有启用功能;功能与词法范围相关,而不是包。
在该词法范围内或从该词法范围调用的代码理论上可以使用来自caller的hinthash 返回值测试启用的功能,但该值本质上是未记录的内部结构。来自该范围之外的代码必须使用PadWalker 之类的东西。
如果您只想检查某些文件中是否存在特定功能,更好的方法是编写 perlcritic 规则。