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