我有两个perl模块,其中一个是“对象库”,另一个是从“对象库”模块导入函数。当我编译第二个模块(perl -c Foo/Bar/NewObject.pm
)时,它编译时没有任何警告。
问题是,如果我将UNIVERSAL模块包含在编译第二个模块(perl -MUNIVERSAL -Mstrict -wc Foo/Bar/NewObject.pm
)中,它会抛出如下警告:
“set”不会被Foo :: Bar :: Object模块
所以我的问题是为什么包含UNIVERSAL导致Exporter函数无法从'object base'模型导出符号?
下面是模块外观的一个例子。
#!/usr/bin/perl -w
use strict;
package Foo::Bar::Object;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw( new set get update create );
...
1;
#!/usr/bin/perl -w
use strict;
package Foo::Bar::NewObject;
use Foo::Bar::Object qw( new set get );
...
1;
答案 0 :(得分:0)
我最后通过跟踪评论中链接的@ikegami来解决这个问题。我不得不将@EXPORT包装在BEGIN {}块中,这似乎有效。
必须有一个模块在导出之前尝试使用这些方法。