Perl语言面向对象入门
2017-07-03 14:03
232 查看
阅读原文请点击
摘要: 通过一些简单代码来展示一下Perl的面向对象编程,可以帮助新手快速上手。因为项目原因,接触了一门新的语言----Perl。初识之时,觉得它既像bash shell,又像C语言。因为有C/C++/Java以及shell基础,所以这门语言上水并没有很困难,但是它的面向对象还是给了我极其深刻的印象,因为它太“奇怪”了。即便是现在,我也不敢说理解了perl的面向对象编程,也仅仅是掌握了其基本的语法。本着学习分享的目的,今天,就通过一些简单代码来展示一下Perl的面向对象编程。
在Java或者C++中,我们会经常使用一个对象Property来读取配置文件,而Property就被定义成一个类。现在,我们就通过perl语言来实现这样一个类。包含三个文件:perl主程序文件test_perl_oop.pl(扮演的角色像是main方法)、包文件Property.pm(类似Java中类源文件)以及配置文件test.conf。
前提:#!/bin/perl表示使用perl来执行当前源程序。和众多脚本语言一样,Perl语言使用#作为单行注释符。
首先,定以“类文件”Property.pm。
#!/bin/perl package Property;#定义包名,同时也定义了类Property。 # new方法同Java中的构造方法,my $class = shift以及bless $class似乎是定义一个类的格式, # 而$file是该类的一个属性(perl使用$来定义变量),我用来存储配置文的文件名,这个值需要通过new方法传递进来。 # 如果该类有多个属性时,可使用hash变量(符号%)来表示 # perl语言中,my表示局部变量,our表示全局变量,sub表示子方法 # bless $file,$class是格式,大致是将$file封装成对象,而加“\”,bless \$file表示封装成对象并返回, # 如果没有加“\”,在bless语句之后使用return $file也是可以的。 sub new{ my $class = shift; my $file = shift; bless \$file, $class; } # 定义类的方法, my $self = shift也是一个格式,$self类似java中的this,表示当前对象 # $$self,$self表示当前对象,$$self(两个$)获取的就是我在new中定义的$file,即文件名 # test.conf配置文件中,每一行使用了key=value这样的格式 # my $key=shift,表示getProperty方法需要传递一个参数进来 sub getProperty{ my $self = shift; my $file_name = $$self; my $key = shift; # 接下来就是一个常规的读文件过程,一行一行读,并将每一行以“=”为分割符,分割成数组 # key=value, 则数组第一个值为key,第二个值为value # 将key与传递进来的$key进行比较,匹配上则返回对应的value,并关闭文件 if(open(cache,"<$file_name")){ while($line = <cache>){ chomp($line); my @temp = split(/=/,$line); if(@temp[0] eq $key){ close(cache); return @temp[1]; } } close(cache); } # 没用找到对应的值时,返回一个undef,类似java中的null undef; } # 类的格式,必须写一个1在这里 1;
至此,一个简单的perl类就定义好了。对不熟悉perl语言的朋友来说,这个类理解起来肯定有点费劲,别管那么多了,趁热打铁,再来个测试方法,把程序跑起来再说。
#!/bin/perl # 引用Property类,use等同java中的import或者C/C++中的include use Property; # new一个Property对象 my $property = Property->new("test.conf"); # 调用类中方法 my $name = $property->getProperty("name"); my $age = $property->getProperty("age"); my $gender = $property->getProperty("gender"); my $adderss = $property->getProperty("address"); print "name: $name, age: $age, gender: $gerder, address: $adderss\n";
还差一个配置文件test.conf
name=Francis Yang age=** gender=male address=Beijing,PRC.
将这三个文件放置于同一目录下,然后使用perl test_perl_oop.pl命令运行程序,结果如下:
name: Francis Yang, age: **, gender: , address: Beijing,PRC. `` OK,就是这样,一个简单的面向对象的perl程序就写完了。相比Java和C++语言,Perl语言在面向对象的语法上更难理解,但是楼主的态度是,管你的,“没事走两步看看”,先来个小样例程序跑一跑,跑一跑再来理解。 学习perl才刚刚开始。It is a long way to go。说到Perl,就不得不提CPAN,这里http://www.cpan.org 提供了非常丰富的Perl语言库给我们。 功力尚浅,说的不对的地方还请指正。
阅读原文请点击
相关文章推荐
- PERL语言入门:第三章:列表与数组:foreach, $_, each用法
- PERL语言入门:第四章:子程序(函数) :调用子程序与子程序返回值
- Perl语言入门笔记 第三章 列表和数组
- Perl语言入门:简单的发送邮件
- Perl语言入门--5--散列、hash
- Perl语言入门笔记 第十五章 智能匹配与given-when结构
- PERL语言入门:第四章:子程序(函数):参数与子程序的私有变量
- Perl语言入门:列表和数组
- Perl语言入门:控制流
- Perl语言入门笔记 第六章 哈希(hash)
- Perl语言入门笔记 第十六章 进程管理
- Perl语言入门:引用
- Perl语言学习(1)——入门
- linux-Perl-语言入门
- Perl语言入门笔记 第七章 漫游正则表达式王国
- Perl语言入门笔记 第四章 子程序
- Perl语言入门笔记 第九章 用正则表达式处理文本
- Perl语言入门
- Perl语言入门笔记 第十章 其他控制结构(unless,until,elsif,for,last,next,redo,and,or)
- PERL语言入门:第四章:子程序(函数):习题1:写一个程序, 求所有参数的和