我有一个名为McuEnc.pm的Perl模块,它位于/ home / eric / temp目录中:
package McuEnc;
use 5.010;
use strict;
use warnings;
use Exporter qw(import);
our @EXPORT_OK = qw(key_enc data_enc data_dec);
sub key_enc { some code }
sub data_enc { some code }
sub data_dec { some code }
1;
我有一个名为test.pl的Perl脚本,该脚本也位于/ home / eric / temp目录中:
use 5.010;
use strict;
use warnings;
use McuEnc qw(key_enc data_enc data_dec);
key_enc("1111");
...
我已将工作目录更改为/ home / eric / temp。现在,如果我运行test.pl脚本,它会正确运行。但是,如果我创建一个新目录/ home / eric / temp / My并将McuEnc.pm文件移入其中,然后修改test.pl脚本,如下所示:
use 5.010;
use strict;
use warnings;
use My::McuEnc qw(key_enc data_enc data_dec);
key_enc("1111");
...
然后当我再次运行test.pl时出现以下错误:
Undefined subroutine &main::key_enc called at ./test line 6.
但是,我仍然可以正确调用子程序:
McuEnc::key_enc("1111");
那么为什么我收到错误消息?怎么了?
答案 0 :(得分:0)
Sobrique在评论中回答了这个问题,但它从未作为正式答案发布:
“use
语句与包语句不匹配。请尝试使用包My::McuEnc
代替”