首页 > 代码库 > Perl面向对象编程

Perl面向对象编程

Perl class is a Perl package

首先,创建一个名为Cocoa.pm的包文件(扩展名pm是包的缺省扩展名,意为PerlModule)。一个模块就是一个包,一个包就是一个类。在做其它事之前,先加入“1;”这样一行,当你增加其它行时,记住保留“1;”为最后一行。这是Perl包的必需条件,否则该包就不会被Perl处理。

其次,我们往包里添加方法使之成为一个类。第一个需添加的方法是new(),它是创建对象时必须被调用的,new()方法是对象的构造函数。

构造函数是类的子程序,它返回与类名相关的一个引用


package person;
use strict;
sub new{
    my $class = shift();
    print ("Class=$class\n");
    my $self ={};      \\创建一个不含键/值的哈希表的引用;
    $self->{"name"}=shift();
    $self->{"sex"}=shift();
    bless $self,$class; \\将该引用和类名关联,类名是可选项
    return $self;    \\返回值指向该引用
}
从new()返回后,$self引用被销毁,但是调用函数保存了对该哈希表 的引用,所以该哈希表的引用数不会为零。从而使Perl在内存中保存该哈希表
#!/usr/bin/perl  
push(@INC,‘pwd‘);  
use person;   
my $cup = new person("Tom","man");

注释

第二行\\将当前目录加到路径寻找列表@INC中,
或者push(@INC,dirname(__FILE__)) 使用到File::Basename模块
第三行\\告诉Perl在@INC路径寻找文件person.pm并包含到解析的源文件拷贝中。
第四行\\或者my $cup = person->new("Tom","man"); person::new("Tom","man");

注意:

一定要在构造函数中初始化变量;

一定要用my函数在方法中创建变量;

一定不要在方法中使用local,除非真的想把变量传递给其他子程序;

一定不要在类模块中使用全局变量。

Perl method is a Perl subroutine


Perl面向对象编程