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,这用于从内存中销毁对象。