跳轉到內容

Perl 程式設計/程式碼重用(模組)

來自華夏公益教科書
上一個:正則表示式參考 索引 下一個:物件

Perl 模組(以pm副檔名結尾的檔案)是 Perl 程式碼檔案,可以在程式之間重複使用。有一個名為 CPAN(Comprehensive Perl Archive Network)的 Perl 模組線上儲存庫,地址為http://cpan.org。許多這些模組隨 Perl 標準提供,但其他模組必須根據需要安裝。

有數千個 Perl 模組可以做任何事情,從建立臨時檔案到呼叫亞馬遜網路服務。如果您知道如何查詢、安裝和使用合適的 Perl 模組,這些模組可以輕鬆快速地編寫您的應用程式。如果您想編寫自己的 Perl 模組,最好的方法是先在http://Search.cpan.org搜尋,以確保您不會重複造輪子。

Perl 模組有兩種主要風格

  1. 函式式
  2. 面向物件

一些 Perl 模組同時使用這兩種方法。

函式式 Perl 模組的使用方式如下

use Foo qw/bar/; # Import the name of the subroutine you want to use.
print bar();

要使用面向物件的 Perl 模組,您需要執行以下操作

use Foo;
my $foo = Foo->new();
print $foo->bar;  #call Foo's bar method and print the output.

如何安裝 Perl 模組

[編輯 | 編輯原始碼]

找到您想要的 Perl 模組http://cpan.org,並下載壓縮檔案。解壓並解壓縮檔案

tar -zxvf MyModule.tgz

然後進入此目錄,並按照 README 或 INSTALL 檔案中的說明進行操作。

您也可以使用一個名為cpan的命令列程式,如果您已安裝它

sudo cpan -imt Module::I::Want

編寫自己的 Perl 模組

[編輯 | 編輯原始碼]

Perl 模組與 Perl 指令碼在兩個關鍵且簡單的方式上有所不同。不要用“#!/path/to/perl”開頭,而是用以下內容開頭

package My::Module::Name;

您需要用一個真值結束模組,因此常見的做法是在檔案末尾執行此操作

1;

以下是一個有效的 Perl 模組

package My::Module::Name;

1;

我們建立一個名為ExampleModule.pm的新檔案,並在其中包含以下程式碼

package ExampleModule;
use strict;
use base "Exporter";
our @EXPORT = qw/hello_world/;

sub hello_world {
  print "Hello, World!\n";
}

1;

我們可以透過執行

perl -c ExampleModule.pm

來測試語法是否有效如果一切正常,它將打印出“ExampleModule.pm 語法正確

”。否則,您可以使用打印出的訊息進行除錯。

#!/usr/bin/perl

use ExampleModule;

hello_world();

exit;

現在,我們可以在指令碼中使用它來檢視它是否有效

瞧!您已經建立了一個 Perl 模組。

建立 CPAN 風格的 Perl 模組

[編輯 | 編輯原始碼]

CPAN 風格的模組具有測試套件,以及將模組構建到 Perl 庫中的方法。下載並安裝Module::Starter

module-starter --module=My::Module::Name, My::Other::Module::Name, --author="My Name" --email="myemail@gmail.com"

從 CPAN。安裝完成後,您的路徑中將有一個名為 module-starter 的程式。要在命令列建立新模組,請執行以下操作然後,它將為您建立一組目錄,包括一些帶有起始 POD 文件的 shell 模組檔案。Perl 模組將位於建立的目錄內的 lib 目錄中。這些是需要編輯的檔案。您可以將模組的測試放到“t

>perl Makefile.PL
>make
>make test
>sudo make install

”目錄中。要安裝和構建模組,請執行以下操作

如何將引數傳遞給 Perl 模組中的函式

[編輯 | 編輯原始碼]

package functions;

sub count() {
  my ($command_type, $rc) = @_;

  []

從 Perl 模組呼叫函式時,使用模組名稱、函式名稱以及開頭和結尾的括號。如果要傳遞一些引數,則按順序在括號內完成。模組中的程式碼以以下方式獲取引數在第一行之後,函式count可以使用傳遞的引數$command_type$rc。主程式呼叫count()

use 
sub count() {
  use functions;

  my $rc;

  $rc = [];

  []
  &functions:count("INSERT", $rc);
  []
上一個:正則表示式參考 索引 下一個:物件
過程如下
華夏公益教科書