#版权声明#
##
#本篇文章的版权为作者萧永庆先生所有.允许网路上的非营利转载.#
#作者的电子邮件地址:syc@cc.ntu.edu.tw#
##
#本文可在下列URL取得:#
#ftp://ftp.math.ncu.edu.tw/chinese/DOC/#
##########################################################################
Perl简介-$ID$
写在前面:有点懒懒的,不太想用脑筋构思文章,想看的人就忍耐一下吧。
Perl是什麽东西呢?Manual上是这样写的:PracticalExtractionandReportLanguage
它原始的目的就是用来取代UNIX原有的sed/awk与shellscript的组合,用来
汇集资讯,产生报表的一个工具语言(程式)。不过随着版本的改进,功能越来
越强,现在的功能已经超乎原先设计时的想像,几乎任何事都可以做到,也变
成每一部UNIX工作站必备的标准工具了。
Perl的作者是LarryWall
程式给大家(publicdomain)使用,包括patch和rn。他设计perl时的哲学是以
实用为第一优先,(所谓的实用就是语言容易使用,有效率,而且完整),而不是设
计一个看起来很漂亮的语言。(漂亮就是程式非常的小,语法幽雅,而且只由
最少的语法基本元素构成)。Perl包含了C,sed,awk,和sh这几个工具最好(作
者(Larry)说的)的特色,而且主要的语法很接近C语言,对原本熟悉C语言
的人来说非常容易上手。
--------------------------------------------------------------------------
讲完废话,可以进入主题了。首先,我们按惯例用perl写个程式印出Hello,World
吧。首先,用你自己最喜欢的编辑器建立hello这个档案,如下:
#!/usr/local/bin/perl
#
#Program''hello'':printout''Hello,World''onstandardout.
#
print"Hello,World";
#endoffile
前面几个以#号开头的行在UNIX的习惯里面是释,所以实际上的程式
只有一行而已。不要忘掉print那一行最後的那个分号。还有要注意perl
会区分大小写。
不过这里有个小细节要注意,就是第一行:
#!/usr/local/bin/perl
乍看之下是释,其实它大有作用。在古早的UNIX系统里面,可执行档分作两种,
一种是包含机器指令的二进位档,系统可以直接载入执行;另外一种叫做
script档,也就是包含一些shell命令的普通文字档:UNIX一遇到这种文字档
就会自动载入/bin/sh去解译与执行它。不过随着UNIX的发展,shell越来越多,
实在不晓得script档是用哪种shell写的。所以就发展出一个机制,在每个script
档的第一行(前面不可以有空白与空白行)写个#!,然後接着写真正要负责处理这个
script的程式档路径,就可以让UNIX知道要用那个程式来处理了。另外,顺便唆一下,
这个路径後面还可以再加一个参数(oneandonlyone),如下:
#!/usr/local/bin/perl-f对
#!/usr/local/bin/perl-pi.bak对
#!perl-f-pi.bak不对->-pi.bak会被忽略。
反正写超过一个就会被忽略就对了。
好了,回归主题,要如何执行这个程式呢?有好几个方法:
1.直接在命令列打:(venus是我们shell的提示号,不用输入)
venusperlhello
2.让perl从standardinput读入perl程式:
venusperl
3.把hello改成可执行档,然後再执行:
venuschmoda xhello
venus./hello
1:如果你的$PATH(或$pathincsh)有"."(目前目录)的话
就可以不用打"./"。
2:你必须确定perl是放在/usr/local/bin/perl上,不然的话
请把这个字串改到正确的值(可能是/bin/perl,试不出来问root)。
哇!好不容易可以执行第一个程式了。结果应该就是我们期望的Hello,World了。
第二个执行的方法蛮有趣的,换句话说,你可以这样子输入perl程式:
venusperl(直接按ENTER)
print"Hello,World\n";
CTRL-D
CTRL-D就是UNIX的endoffile,perl处理命令的时候会整个档案都读入、
分析一遍後,再开始执行,所以Hello,World会在按完CTRL-D後才印出来,
而不是打prin
