【发布时间】:2018-07-05 14:33:32
【问题描述】:
我有一个名为Utilities.pm 的模块。它导出一个名为dummy_method 的子例程。
package Foo::Utilities;
use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(dummy_method);
sub dummy_method {
# do things
}
我有一个使用 dummy_method 子例程的 Perl 脚本:
use strict;
use warnings;
use Foo::Utilities qw('dummy_method');
my $foo = Foo::Utilities::dummy_method("foo");
print("$foo\n");
执行该脚本会引发导出错误:
Foo::Utilities 模块不导出“dummy_method”
在 /home/me/foo.pl 第 3 行出现导入错误后无法继续
BEGIN 失败——编译在 /home/me/foo.pl 第 3 行中止。
我很困惑,因为我用@EXPORT = qw(dummy_method); 明确地导出了那个子例程。如何在另一个脚本中使用dummy_method?
【问题讨论】:
-
您的问题令人困惑。您的模块导出
dummy_method,但您尝试导入并运行some_method,它甚至不存在。请注意,一旦您正确导入了子例程,就不需要完全限定它:some_method('foo')就可以了。 -
@Borodin 这是一个错字 - 这是固定的。
-
我希望你能复制并粘贴你的真实代码和错误。
-
鲍罗丁说过的话。您以重要的方式更改了错误消息。或者改代码。我们无法确定。始终始终复制并粘贴您的实际代码和错误。
-
@alex 是的,你做到了。我怀疑原始消息是否包含 either
some_method或dummy_method。在你修改它之前和之后它肯定不会是正确的。
标签: perl