Rob*_*Rob 5 perl attributes custom-attributes
我对Attribute :: Handlers有一个奇怪的问题,看起来像某种bug:
package MyPackage;
use Attribute::Handlers;
sub UNIVERSAL::foo :ATTR(CODE) {
...
}
Run Code Online (Sandbox Code Playgroud)
当在MyPackage中使用时,或者从使用MyPackage的脚本的主包中使用时,只要编译器遇到表单的函数,就会调用foo处理程序
sub bar:foo {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我在另一个使用MyPackage的.pm文件中有另一个包.编译器接受":foo"属性,但不调用处理程序.
我尝试在MyPackage中编写一个导入函数,将foo处理程序导出到调用者的命名空间,但这似乎没有帮助.
任何人都可以理解这个吗?在过去的几天里,我一直在努力解决这个问题.
我不知何故完全错过了你昨天帖子中的 Attribute::Handlers - 正如我对此答案的旧版本的评论中提到的,也许将其包装use MyPackage在一个BEGIN块中会导致事情得到正确解决。
我不确定您为什么选择将foo()属性处理程序放入UNIVERSAL- 这是尝试使其正常工作的一步吗?