目 录
1. 神奇的Perl
1.1 拥抱Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Perl处理输入输出-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Perl处理输入输出-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 word文件批量另存为txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Perl的语法-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 perl语法-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7 神奇的Perl-哈希与数组(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8 神奇的Perl-哈希与数组(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.9 神奇的Perl-哈希与数组(3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.10 神奇的Perl-哈希与数组(4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.11 perl处理输入和输出-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.12 神奇的perl-哈希和数组(5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.13 神奇的Perl-哈希和数组(6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.14 神奇的Perl-哈希和数组(7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.15 神奇的perl-正则表达式(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.16 神奇的perl-正则表达式(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.17 神奇的Perl-正则表达式(3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.18 神奇的Perl-最佳Perl入门读物 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
http://deepfuture.javaeye.com
第 2 / 87 页
1.1 拥抱Perl
发表时间: 2010-03-24
声明:本神奇的Perl系列为刘兴
(http://deepfuture.javaeye.com/)原创,未经笔
者授权,任何人和机构不能转载
拥抱Perl
Perl是什么?
Perl 最初的设计者为Larry Wall, Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。Perl 一般
被称为“实用报表提取语言”(PracticalExtraction andReportLanguage),虽然有时被称做“病态折中垃圾列表
器”(PathologicallyEclectic Rubbish Lister)。
Perl是神奇的
Perl的神奇之处在于具有C语言一样的强大能力和灵活性,但却比C简单很多。
你不用先学习所有 Perl 的东西就可以开始写有用的程序,这对于那些急于完成任务却不得不为此编写一堆代码的人来可谓雪
中送炭,从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言,Perl 既强大又好用,所
以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作
到网络管理。
对于不想为程序设计语言买单的人来说,Perl也不失一种选择,因为Perl的解释程序是开放源码的免费软件,使用Perl不
必担心费用,Perl也能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。
安装Perl运行环境和IDE
笔者推崇使用以下组合:
运行环境:activeperl , ActivePerl一个可以让你任意执行 Perl 程序的工具软件,其包含了包括有 Perl for
Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序。
下载地址:http://www.activestate.com/activeperl/
IDE: Open Perl IDE,OpenPerlIDE是免费且开源的,也是绿色软件,使用时直接运行PerlIDE.exe文件即可。
下载地址:http://sourceforge.net/projects/open-perl-ide/files/
使用说明:OpenPerlIDE是绿色软件,直接运行PerlIDE.exe文件即可。如果你觉得OpenPerlIDE不好用,可以结合
ultraedit一起使用。
hello,world
下面我们开始perl的helloworld之旅。打开Open Perl IDE,新建一个名为perl1-1.pl的文件,内容如下:
http://deepfuture.javaeye.com
1.1 拥抱Perl
第 3 / 87 页
1.2 Perl处理输入输出-1
发表时间: 2010-03-24
声明:本神奇的Perl系列为刘兴(http://deepfuture.javaeye.com/)原创,未经笔者授权,任何人和机构不能转载
1.第一个Perl任务
我们先放松想像一下:你是公司一个普通的开发人员,一大早,阳光明媚,你急不可待打开QQ,跟最近泡上的MM聊天。
此时项目组长急勿勿过来了,交给你一个紧急任务,将perl1-2.txt中的人员按城市分别存为几个文本文件,文件名是城市名,
文本内容如下:
刘欢欢,20,长沙#冯军,25,上海#李兵,21,北京#李军,23,北京#李志,27,北京#黄王兵,29,长沙#赵兵,22,上海#李强兵,25,上
海。。。。。。。
你不禁倒吸一口凉气,天呀,又要编写一大堆代码来完成这个任务,而且还要读写文件,好久没操作文件IO了,有些命
令都忘了。你也许足够聪明,想到干脆把perl1-2.txt导入到数据库中,然后运行SQL查询,按城市生成不同的表再导出,很快
你打消这个念头,工作量大,如果城市众多,手工将生成的表导出几乎不可能。用C、C++、Pascal、java等高级语言确实完
成这个任务,但代码量较大,使用Perl,10多行就能搞定。请允许我在此卖个关子,我们先了解一下Perl的输入输出基础,回
头再来解决这个任务。
Perl语言具有以下基本特点:
1、Perl用#表示后面的内容为注释。
2、Perl语句用;表示结束。
3、Perl程序通常以pl结尾,如果是做为Apache容器中的cgi程序来执行脚本,必须为脚本文件名提供.pl或.cgi扩展名。
4、Perl对变量的表示方式非常简洁:
1)Perl不要求变量有类型。
2)对于数组、列表,采用以@后接变量名表示,比如@names。
3)对于保存单个值的变量,采用$后接变量名表示,称之为标量,比如$name。
4)对于哈希变量,采用%后接变量名表示。
http://deepfuture.javaeye.com
1.2 Perl处理输入输出-1
第 5 / 87 页