perl面向对象
来源:
http://www.cnblogs.com/itech/archive/2012/08/21/2649580.html
sub UNIVERSAL::log()
{
my($self,$msg)=@_;
print "$self: $msg\n";
}
package Critter;
sub new { bless {} }
如果你希望用户不仅能够用 "CLASS->new()" 这种形式来调用你的构造函数,还能够以 "$obj->new()" 这样的形式来调用的话,那么就这么做:
sub new {
my $this = shift;
my $class = ref($this) || $this; #ref支持了“$obj->new()”形式的调用(感觉是获得类名)
my $self = {};
bless $self, $class;
$self->initialize();
return $self;
}
一个方法就是一个简单的子程序
my $fred = Critter->find("Fred");
$fred->display("Height", "Weight");
my $fred = Critter::find("Critter", "Fred");
Critter::display($fred, "Height", "Weight");
简单示例
简单示例
、说明
本程序演示了在Perl中如何进行面向对象编程:演示程序包含两个文件:person.pl 和 person.pm,把 person.pl 和 person.pm 放在当前目录下,运行"perl person.pl"即可以看到结果。person.pm定义了名为person的类。person.pl中创建了person类的实例,并测试了person的成员方法。 、person.pm的内容
#!/usr/bin/perl -w
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;
} sub getName {
my ($self) = @_;
return $self->{"name"};
} sub setName {
my ($self, $name) = @_;
$self->{"name"} = $name;
} sub getSex {
my ($self) = @_;
return $self->{"sex"};
} sub setSex {
my ($self, $sex) = @_;
$self->{"sex"} = $sex;
} 、person.pl的内容
#!/usr/bin/perl -w
use strict;
use person; sub main()
{
my $tom = person->new("Tom", "male");
my $kiss = person->new("Kiss", "female");
my @persons = ($tom, $kiss);
for my $p (@persons) {
printf("NAME: %s\tSEX: %s\n", $p->getName(), $p->getSex());
}
} &main(); 、程序运行结果
CLASS = person
CLASS = person
NAME: Tom SEX: male
NAME: Kiss SEX: female
http://bbs.chinaunix.net/thread-980909-1-1.html
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=770196
perl面向对象的更多相关文章
- Perl 面向对象编程的两种实现和比较:
<pre name="code" class="html">https://www.ibm.com/developerworks/cn/linux/ ...
- Perl面向对象(1):从代码复用开始
官方手册:http://perldoc.perl.org/perlobj.html 本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象 ...
- Perl面向对象(2):对象
本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象销毁 第3篇依赖于第2篇,第2篇依赖于1篇. 已有的代码结构 现在有父类Animal ...
- Perl面向对象(3):解构——对象销毁
本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象销毁 第3篇依赖于第2篇,第2篇依赖于1篇. perl中使用引用计数的方式管理内存, ...
- perl 面向对象编程
今天看到一个perl面向对象编程的例子,充分体现了如何对数据进行封装: 自己模仿写一个读取配置文件的例子, 配置文件的内容如下 samtools_binary = /usr/bin/samtools ...
- perl 面向对象 use base
1.XXX.pm 文件里面的第一行要是:package XXX: 2.要有构造函数 sub new,实现如下: sub new { my $class = shift; # Get the reque ...
- perl 面向对象demo
Vsftp:/root/perl/17# cat Critter.pm package Critter; sub new { my $self = {}; my $invocant = shift; ...
- perl 面向对象 new方法
[root@wx03 test]# cat Scan.pm package Scan; sub new{ my $class = shift; my $self={ 'a'=>11, 'b'=& ...
- 基于perl面向对象开发的微信机器人
<pre name="code" class="html">[root@wx03 lib]# ls -ltr total 40 -rw-r--r-- ...
随机推荐
- Linux系统VPS/服务器安装WINDOWS桌面环境可以采用的几个方法
我们公司的几个项目需要在WINDOWS桌面类型的界面操作,哪怕仅有一个浏览器远程操作也是可以的,我们运维部门得到的任务就是需要能在已有的Linux系统的VPS.服务器环境中能够远程操作,至少需要能可以 ...
- 自定义控件之圆形颜色渐变进度条--SweepGradient
前几天在群里面有人找圆形可颜色渐变进度条,其中主要的知识点是SweepGradient: mSweepGradient = new SweepGradient(240, 360, new int[] ...
- iOS开发Embedded dylibs/frameworks are only supported on iOS 8.0 and later for architecture armv7的解决方法
全局搜索IPHONEOS_DEPLOYMENT_TARGE改为更小的版本
- js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结
1.js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结 : http://www.haorooms.com/post/js_pc_iosandmobile 2.Js判断客户端是否为PC还是手 ...
- CSS3背景颜色渐变效果
1.firefox浏览器: background-image: -moz-linear-gradient(top , #eef9fe, #d1ecff); 2.safari.chrome浏览器: ba ...
- Objetive-C 中的相等比较
1.== 用于比较两个对象的地址是否相同 1)需要注意的是相同的短字符串,一定大小整数(nsnumber),Objetive-C 底层会做cache,两个对象,指向同一个地址. 例如: NSStrin ...
- OMCS ——卓尔不群的网络语音视频框架
作为.NET平台上的开发人员,要开发出一个像样视频聊天系统或视频会议系统,非常艰难,这不仅仅是因为.NET对多媒体的支持比较有限,还因为网络语音视频这块涉及到了很多专业方面的技术,而.NET在这些方面 ...
- java增加时间
一个简单的东西. 示例如下: /** * 增加时间 * @param oldDate 老时间 * @param addtime 增加的时间 * @return */ public Date addDa ...
- Openjudge-计算概论(A)-求平均年龄
描述: 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位. 输入第一行有一个整数n(1<= n <= 100),表示学生的人数.其后n行每行有1个 ...
- id和instancetype的异同
相同点: 都可以作为方法返回值类型 在initWithName:方法中是一样的,例如: - (id)initWithName:(NSString *)name; - (instancetype)ini ...