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

相關文章
相關標籤/搜索