從一切我已經使用Perl模塊讀取,基本用法是:的Perl - 封裝/模塊問題
- 與
.pm
擴展,其中包括聲明package <name>
,其中<name>
是的文件名模塊文件沒有擴展名的模塊。 - 使用模塊的代碼文件包含語句
use <name>;
。
我正在編寫的應用程序有一個主代碼腳本,它使用了大約5個模塊。我忘記了在模塊中包含package <name>
語句,但是我的代碼在use <name>
語句中仍然運行良好。我開始接收Undefined subroutine
錯誤與其中一個模塊,所以我將package語句添加到每個模塊。現在其他模塊停止工作。是什麼賦予了?
實施例:
mainapp.pl
#!/usr/bin/perl
use UtyDate;
my $rowDate = CurrentDate("YYYYMMDD");
UtyDate.pm
#!/usr/bin/perl
package UtyDate;
sub CurrentDate
{
#logic
}
return 1;
當我運行上面的代碼,我得到的錯誤Undefined subroutine &main::CurrentDate called at...
。但是,如果我從UtyDate.pm中刪除package UtyDate;
行,則不會出現錯誤。這種情況存在幾個但不是全部我的模塊。
顯然還有更多的代碼我沒有顯示,但我很困惑我沒有顯示的任何代碼可能會影響我在這裏顯示的包/使用構造。
OP應該閱讀' perlmod'(http://search.cpan.org/perldoc/perlmod)首先作爲了解'Exporter'中出現的情況的先決條件 – mob 2010-06-04 22:13:55
很好的解釋,謝謝。我見過出口商在我看到的一些例子中使用過,但不是全部,所以我認爲它是無關的。 我會看看文件太mobrule,謝謝。 – brydgesk 2010-06-04 22:29:32