Perl面向对象编程

Perl class is a Perl package

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

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

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


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");

注释 code

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

注意: 对象

必定要在构造函数中初始化变量; 内存

必定要用my函数在方法中建立变量; class

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

必定不要在类模块中使用全局变量。 扩展

Perl method is a Perl subroutine

相关文章
相关标签/搜索