1
我有一个名为McuEnc.pm一个Perl模块,它位于/首页/埃里克/ temp目录:未定义子程序及主要:: key_enc
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;
我有一个Perl脚本名为test.pl也位于在/ 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 /埃里克/温度/我和McuEnc.pm文件移动到它,然后修改test.pl脚本follwoing:
use 5.010;
use strict;
use warnings;
use My::McuEnc qw(key_enc data_enc data_dec);
key_enc("1111");
...
然后我发现了以下错误当我test.pl再次运行:
McuEnc::key_enc("1111");
那么,为什么我收到错误消息:
Undefined subroutine &main::key_enc called at ./test line 6.
不过,我仍然可以正确地调用子程序?哪里不对?
打算让快速猜测,并说这是因为'use'语句与'package'语句不匹配。试试'包My :: McuEnc',看看它是否有效? – Sobrique
它的工作原理!非常感谢你。 –
@Sobrique你应该把它作为答案 – stevieb