如果想在perl中使用面向对象编程,就要先熟悉perl的模块。
模块就相当于是perl中的'类',一个perl的模块文件以.pm为后缀,其内部结构大致如下:
#!/usr/bin/perl package DynamicTable; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(heng, ha); sub heng { my $class = shift; print "int method heng() type=$class->{'type'}\n"; } sub ha { my $class = shift; print "int method ha() type=$class->{'type'}\n"; } sub new { my $class = shift; my %param = @_; my $this = {}; $this->{'type'} = $param{'type'}; bless $this; return $this; } 1
@EXPORT 里面存的是需要导出的方法(method)。
new()方法是整个模块的构造函数,会在创建对象的时候被调用。它可以接受初始化参数,就像c++类中的构造函数一样。
在上面代码中,你会看到所有方法中的第一句总是 my $class = shift; 这是为什么呢?
每个方法都会有个默认的参数,就是本对象自己的句柄。
new()方法可能会将一些初始化参数放入句柄指向的哈希结构中,如:
$this->{'type'} = $param{'type'};
要是heng()方法想要使用它,可以这样:
my $class = shift;
print $class->{'type'};
模块使用方法:
在一个普通的perl文件中,想要使用这个模块,你只需这样:
#!/usr/bin/perl use DynamicTable; #使用DynamicTable模块 #创建对象 $q = new DynamicTable( 'type' => 'hostfucker'); #或者用下面语句创建对象,也ok #$q = DynamicTable->new('type'=>'hostfucker'); #调用heng()方法 $q->heng(); #调用ha()方法 $q->ha();