Chinaunix首页 | 论坛 | 博客
  • 博客访问: 420882
  • 博文数量: 117
  • 博客积分: 5235
  • 博客等级: 大校
  • 技术积分: 1775
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-12 15:51
文章分类

全部博文(117)

文章存档

2012年(9)

2011年(2)

2010年(21)

2009年(13)

2008年(72)

我的朋友

分类: LINUX

2008-06-25 16:41:31

背景:
  都面向对象了,无论为什么,都不得不学会之。
 
正文:
 
包格式
*.pm >>> 文件名
 
 

#!/usr/bin/perl

package PG; #包名

use strict;
use warnings;
use Data::Dumper;

sub new #所谓的构造函数,但你可以写成其他任何名字,但内容是如此的
{
    my $this = {};
    bless $this;
    return $this;
}

sub memberFun(){ #成员函数

    my $this = shift; #如果想在包外调用,就得这样,有点像public

    print "Somethin\n";

}



1; #这句怎么强调都不过分,我觉得这是perl的一个挫败设计,为什么呢?它是如此不起眼以至于碰两下删除键就无影无踪了

 

包使用:

*.pl

 

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use lib 'path'; #将包路径加入

use PG; #引入包

 

my $PG_obj=PG::new(); #多么像java或c++

$PG_obj->memberFun(); #调用成员函数,很像引用

 

骨架就是这样,你可以用它来写出java或c++中最基本的类设计了,但重载,继承等,先别想了。

另一个例子:
 

package Person; #包名, 最好与文件名相同


sub new{
  my $this = {}; #本质是一个哈希引用(指针)

  my $type = shift; #接收第一个参数,类名

  my %parm = @_; #接收全部参数到一个哈希

  $this->{'Name'} = $parm{'Name'}; #初始化各成员变量

  $this->{'Age'} = $parm{'Age'};
  bless $this, $type; #祝福给$type,此处是自己

  return $this; #返回对象

}

sub setName{
  my $this = shift; #接收第一个参数,对象本身,在包外调用

  $this->{'Name'} = shift; #开始接收其他参数

}
1;

调用:

use Person;
use strict;
my $jack = new Person('Name'=>"jack wang", 'Age'=>23);
print $jack->{'Name'};
print $jack->{'Age'};
$jack->setName("Blue zheng");
print $jack->{'Name'};
Person::setName($jack, "Sean Zhao"); #静态调用

阅读(527) | 评论(0) | 转发(0) |
0

上一篇:引用

下一篇:空指针答疑

给主人留下些什么吧!~~