我偶爾會遇到這個問題。出於某種原因,當我嘗試調用導出的子程序時,出現「Undefined subroutine」錯誤,我不知道爲什麼,因爲它似乎是在成熟代碼中出現藍色。未找到導出的Perl子文件
發生的最後一次我想我使用了諸如「package_2 :: exported_sub()」之類的東西。「這次工作,但它只是返回package_2中的另一個子錯誤。即使把「使用package_2」在上面的行並沒有幫助!我能想到的唯一的事情就是導出的子程序在某種程度上是未定義的。
我的代碼看起來有點像這樣:
文件package_1.pm:
package package_1;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
local_sub
);
use package_2;
use strict;
use warnings;
use diagnostics;
sub local_sub {
&exported_sub;
}
文件package_2.pm:
package package_2;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
exported_sub
);
use strict;
use warnings;
use diagnostics;
sub exported_sub {
# do something
}
我在我束手無策。 ..當我彈出一個無關的熱門票時,我正在製作一個無關的熱門票,明天就會開始用戶測試!
在此先感謝!
更新:
池上,感謝您的修復!不過,我很好奇。我再次遇到這個問題,但是這次我從來沒有找到循環依賴。我把它縮小到一行:
$row->{$attr} = ' ' unless ($row->{$attr});
很顯然,這條線與使用或根本無關!我查看了Apache日誌,但似乎沒有什麼突出的,但將解決任何我找到的工作。我還會看看我能否獲得更多警告。
除此之外,您作爲下一步推薦什麼?
謝謝!
我忘了提及警告和診斷程序沒有返回任何內容......我剛收到錯誤消息。 – ThorInSuburbia
您發佈的代碼對我來說很好用(使用簡單的主程序'use strist; use package_1; local_sub();',因此您應該嘗試找出示例代碼中缺少的內容以使其失敗。 –
這個問題似乎是由第一個'使用'的第三個文件。註釋'use'行解決了這個問題,所以我想知道是否有什麼奇怪的文件,如DOS CR,我會繼續挖掘! – ThorInSuburbia