Perl 模組和包
模組和包彼此密切相關並且是獨立的。
- 包:Perl 包也稱為名稱空間,它具有程式中使用的所有唯一變數,如雜湊陣列、陣列、標量和子程式。
- 模組:模組是可重用程式碼的集合,我們在其中編寫子程式。可以在 Perl 程式中載入這些模組,來用這些模組中編寫的子程式。
什麼是 Perl 模組?
在任何系統上安裝 Perl 時都會安裝標準模組。
CPAN:全面的 Perl 存檔網路 - Perl 模組的全域性儲存庫。我們自己定製的 Perl 模組可以由我們編寫。基本上,在任何指令碼中載入的模組將匯出其所有全域性變數和子程式。這些子程式可以直接呼叫,就好像它們是在指令碼本身中宣告的一樣。Perl 模組可以使用 .pm
副檔名編寫,檔名比如說時 Foo.pm
。可以使用程式開頭的 package Foo
編寫模組。
Basic Perl 模組:
#!/usr/bin/perl
package Arithmetic;
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
要使用此 Perl 模組,我們必須將其放在當前工作目錄中。
我們可以使用 require
或 use
在程式碼中的任何位置來載入 Perl 模組。require
和 use
之間的主要區別是,require
在執行時載入,而 use
是在編譯期間載入的。
#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);
我們也可以使用 use Arithmetic
訪問包。
Exporter
此模組具有匯入方法的預設功能。
#!/usr/bin/perl
package Arithmetic;
require Exporter;
@ISA= qw(Exporter); # This is basically for implementing inheritance.
@EXPORT = qw(add);
@EXPORT_OK = qw(subtract);
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
@EXPORT
陣列可用於傳遞變數和子程式列表,預設情況下將匯出到模組的呼叫者。
@EXPORT_OK
陣列可用於傳遞將按需匯出的變數和子程式列表,使用者必須在載入模組時指定。
#!/usr/bin/perl
use
Arithmetic qw(subtract);
print add(5,6);
print subtract (5,6);
預設情況下,add
子程式將被匯出。如果在載入模組時未指定減法方法,則不會匯出減法方法。