未定义的子程序& main :: key_enc

时间:2016-10-14 08:41:15

标签: perl

我有一个名为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");

那么为什么我收到错误消息?怎么了?

1 个答案:

答案 0 :(得分:0)

Sobrique在评论中回答了这个问题,但它从未作为正式答案发布:

use语句与包语句不匹配。请尝试使用包My::McuEnc代替”