包是一個在自己的命名空間的代碼集合
命名空間是唯一的變量名稱(也稱為符號表)的命名集合。
命名空間避免包之間的變量名衝突。
包使建造的模塊在使用時,不會破壞自己的命名空間模塊之外的變量和函數
如果指定的包不存在,首先創建一個新的命名空間。
$i = 1; print "$i\n"; # Prints "1" package foo; $i = 2; print "$i\n"; # Prints "2" package main; print "$i\n"; # Prints "1"
包將一直有效直至另一個包語句被調用時,或直到結束的端部的當前塊或文件。
你可以明確地使用::包修飾詞的包內的引用變量。
$PACKAGE_NAME::VARIABLE_NAME For Example: $i = 1; print "$i\n"; # Prints "1" package foo; $i = 2; print "$i\n"; # Prints "2" package main; print "$i\n"; # Prints "1" #by www.gitbook.net print "$foo::i\n"; # Prints "2"
您可以定義任意數量的代碼塊,名為BEGIN和END分彆作為構造函數和析構函數。
BEGIN { ... } END { ... } BEGIN { ... } END { ... }
每一個BEGIN塊的perl腳本加載和編譯後執行,但在此之前的任何其他語句執行
每個END塊執行之前的Perl解釋器退出。
BEGIN和END塊創建Perl模塊時特彆有用。
Perl模塊是一個可重用的包中定義的庫文件,其名稱是一樣的包的名稱(.pm結束)。
Perl模塊文件可能包含稱為“Foo.pm”的語句。
#!/usr/bin/perl package Foo; sub bar { print "Hello $_[0]\n" } sub blat { print "World $_[0]\n" } 1;
有關模塊的幾個引人注目地點
這些函數要求和使用將加載一個模塊。
兩者都使用@INC搜索路徑列表中找到該模塊(你可以修改它!)
都調用eval函數來處理代碼
1,底部導致EVAL計算為TRUE(從而不會失敗)
加載一個模塊可以通過調用require函數
#!/usr/bin/perl require Foo; Foo::bar( "a" ); Foo::blat( "b" );
注意上麵的子程序的名稱必須完全合格的(因為他們被隔離在自己的包)
這將很好,使功能欄和BLAT被導入到我們自己的命名空間,所以我們不用使用的Foo::限定符。
加載一個模塊可以通過調用use函數
#!/usr/bin/perl use Foo; bar( "a" ); blat( "b" );
注意,我們並不用完全限定包的函數名?
use 函數將導出的符號列表,從一個模塊添加了一些報表模塊內
require Exporter; @ISA = qw(Exporter);
然後,提供的符號列表(標量,列表,哈希,子程序等),通過填寫列出的變量名為@EXPORT:
package Module; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(bar blat); #by www.gitbook.net sub bar { print "Hello $_[0]\n" } sub blat { print "World $_[0]\n" } sub splat { print "Not $_[0]\n" } # Not exported! 1;
當你準備好你的Perl模塊裝運,接著是以標準的方法創建一個Perl模塊樹。 這是使用h2xs實用工具。隨著PERL此實用程序。這裡是語法使用h2xs
$h2xs -AX -n Module Name # For example, if your module is available in Person.pm file $h2xs -AX -n Person #by www.gitbook.net This will produce following result Writing Person/lib/Person.pm Writing Person/Makefile.PL Writing Person/README Writing Person/t/Person.t Writing Person/Changes Writing Person/MANIFEST
下麵是這些選項的描述
-A 省略了自動加載磁帶機代碼(最好使用大量不常用的子程序模塊定義)
-X 省略了XS元素(外部子程序,在外部意味著外部Perl,即C)
-n 指定模塊的名稱
因此,上麵的命令創建的人目錄下麵的內部結構。上麵示出的實際結果。
Changes
Makefile.PL
MANIFEST (contains the list of all files in the package)
README
t/ (test files)
lib/ ( Actual source code goes here
所以,你最後tar此目錄結構到一個文件Person.tar。 適當的指示,你將不得不更新README文件。 您可以提供一些測試的例子t目錄中的文件。
安裝Perl模塊是很容易的。按照以下順序進行安裝任何Perl模塊。
perl Makefile.PL make make install
Perl解釋器的目錄列表中,搜索模塊(全局數組@INC)