Perl 物件導向程式設計
在本節中,我們將學習如何建立 Perl 物件導向的模組。
首先,讓我們看看物件是什麼?物件是一個例項,我們可以使用它來訪問、修改和定位任何 Perl 模組中的某些資料。這只不過是讓現有的 Perl 包、變數和子程式在引用其他程式語言時就像類、物件和方法一樣。
建立類
我們從上一個節已經知道如何建立模組。類的目的是儲存方法和變數。Perl 模組將具有作為方法的子程式。我們需要訪問那些變數和子程式物件。
Perl 建構函式
Perl 中的建構函式是一個方法,它將執行並返回一個帶有標記為引用的模組名稱的引用。這被稱為祝福班級。我們使用一個特定的變數來祝福 Perl 類,這是保佑。
#!/usr/bin/perl
package Arithmetic;
sub new
{
my $class=shift;
my $self={};
bless $self, $class;
return $self;
}
sub add
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
用作類的建構函式的新方法,此建構函式將為我們建立一個物件,並將返回撥用此建構函式的指令碼。
#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new();
my $result= $obj->add(5,6);
print "$result";
$result = $obj->subtract(6,5);
print "$result";
在這裡,我們需要了解物件是如何建立的。每當我們嘗試為類建立一個物件時,我們都需要使用該類的全名。假設,如果 Perl 類位於 lib\Math\Arithmetic.pm
中。而且,如果我們想從 lib 目錄訪問這個 Perl 類,那麼我們必須在呼叫指令碼時提供類的完整路徑。
use lib::Math::Arithmetic;
my $obj = lib::Math::Arithmetic->new();
這就是 Perl 中物件建立的方式。
@INC
Perl 指令碼如何知道庫模組的存在位置? Perl 只知道指令碼的當前目錄和 Perl 內建庫路徑。每當我們使用不在當前目錄或 Perl 庫路徑中的 Perl 模組時,指令碼將始終失敗。@INC
,是一個陣列,它包含所有必須查詢 Perl 模組的目錄路徑。試著執行此命令,看看輸出結果。
perl –e "print @INC"
這將給出一些輸出,這就是 lib 模組可用的路徑。每當我們使用任何新的庫模組時,我們都需要告訴 Perl 和直譯器來在可用的特定位置檢視 Perl 模組。
push(@INC, "PATH TO YOUR MODULE");
將此作為你的第一行程式碼。這將告訴你的直譯器在該路徑查詢。或用,
lib Arithmetic; # List here is your Perl Module location
Perl Destructor
預設情況下,在指令碼退出之前呼叫物件的 deconstructor
,這用於從記憶體中銷燬物件。