2016-10-14 133 views
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. 

不過,我仍然可以正確地調用子程序?哪裏不對?

+6

打算讓快速猜測,並說這是因爲'use'語句與'package'語句不匹配。試試'包My :: McuEnc',看看它是否有效? – Sobrique

+0

它的工作原理!非常感謝你。 –

+2

@Sobrique你應該把它作爲答案 – stevieb

回答

0

這是在評論回答Sobrique,但它從來沒有張貼作爲官方的回答:「在use語句不符合包語句儘量打包My::McuEnc而不是」

相關問題