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,這用於從記憶體中銷燬物件。