當前位置:首頁 » Perl » 編寫Perl模塊

編寫Perl模塊

編寫Perl模塊,Perl包,例子教學,參考手冊和代碼 -

什麼是包?

  • 包是一個在自己的命名空間的代碼集合

  • 命名空間是唯一的變量名稱(也稱為符號表)的命名集合。

  • 命名空間避免包之間的變量名衝突。

  • 包使建造的模塊在使用時,不會破壞自己的命名空間模塊之外的變量和函數

包語句

  • 包語句在當前的命名上下文切換到指定的命名空間(符號表)

  • 如果指定的包不存在,首先創建一個新的命名空間。

$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 { ... }
END { ... }
  • 每一個BEGIN塊的perl腳本加載和編譯後執行,但在此之前的任何其他語句執行

  • 每個END塊執行之前的Perl解釋器退出。

  • BEGIN和END塊創建Perl模塊時特彆有用。

什麼是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 函數

加載一個模塊可以通過調用require函數

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

注意上麵的子程序的名稱必須完全合格的(因為他們被隔離在自己的包)

這將很好,使功能欄和BLAT被導入到我們自己的命名空間,所以我們不用使用的Foo::限定符。

 Use 函數

加載一個模塊可以通過調用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模塊裝運,接著是以標準的方法創建一個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模塊。

perl Makefile.PL
make
make install

Perl解釋器的目錄列表中,搜索模塊(全局數組@INC)