Perl 语法简介.doc_第1页
Perl 语法简介.doc_第2页
Perl 语法简介.doc_第3页
Perl 语法简介.doc_第4页
Perl 语法简介.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Perl 语法简介2010-03-06 00:011.PERL变量1.1.Perl变量分类Perl变量分为标量变量,数组变量,关联数组变量3类.PERL的变量对大小写敏感,比如:An,AN,an是3个不同的变量,但是不同类型的变量可以使用同一个名字,比如:VAR可以是一个标量变量,同时也可以有一个数组变量也是VAR.这是因为PERL对每种类型的变量采用独立的名字空间,另外PERL的变量,可以存储任何类型的数据,无须像C那样声明变量,数据类型之间会自动转换,同时PERL变量也有全局与过程变量之分,默认是全局变量.1.2.Perl变量1.2.1 Scalar变量(标量变量)标量变量只能存放一个值.PERL中的标量变量名总以字符$开头.下面的PERL语句把9这个值赋给标量变量$nine.把BATI赋给标量变量$name.然后用PRINT语句打印出来.$nine=9;$name=BATI;print($name,is,$nine);把上述语句存为TEST01.PL文件,然后再在DOS环境下(WIN9X的MS-DOS方式也可以)运行:C:PERL5PERL TEST01.PL(回车)BATI is 9(什么?很眼熟?是阿,PERL和我们常用C就是这么相似)1.2.2 数组变量数组是一次能够存储多个变量的表.它的赋值方法如下:weekdays=(Sun,Mon,Tue,Wed,Thu,Fri,Sat);print (weekdays); #输出为: SunMonTueWedThrFriSatprint ($weekdays1); #输出为: Sunwork=weekdays1.5; #此时,数组work的值为(Mon,Tue,.,Fri);none=(); #表示空数组数组变量名以开头,内是数组的下标值,下标值从0开始.这与C依然很相似.同样的在PERL中,如果只有数组名,而忽略下标的话,也会像C那样输出整个输出,比如:第一个输出语句.但请注意在输出Sun那一句时,当我们引用数组中某一个值的时候,我们不再使用,而是使用$作为变量的开头,因为就单个值而言,它是一个标量变量,所以如此(这和C可不一样哦)当然你还得给出下标值.在给数组work赋值的语句中,我们用到了SLICE初始化数组,你不必关心什么是SLICE,你只要记住这种形式就可以了,其实SLICE是表格的一部分,是官方的表示.对数组的赋值是多种多样的.前面我们看到的都是用值对数组赋值,同样你也可以用变量或者另一个数组的值给数组赋值,比如:name=($firstname,lastname);say=(He said,saysomething);以下是SLICE的例子:weekend=weekdays0,6; #数组weekend的值为(Sun,Sat)print(weekdays1.5,0,6); #输出结果为MonTueWedThuFriSunSatPERL还支持一种特殊构造符$#var,它是用来返回数组最后一个索引值.比如下面的语句利用$构造符确定数组的第一个索引值,用$#var确定数组最后的索引值,然后显示整个数组:for ($i=$;$i=$#buffer;$i+) print $buffer$i; 上面语句与print buffer;的输出结果是一样的.1.2.3 标量与数组变量表构造符(,)与顺序计值运算符(,)非常相似.因此,PERL调用哪一个运算符取决于命令文件运行时的具体情况,即文件正在使用数组还是标量值.PERL在数组表达式中调用表结构符, 在顺序计值中调用计值运算符.请考虑以下两个表达式:an_array=(1,2,3,4,5);$a_scalar=(1,2,3,4,5);第一个语句初始化一个数组,第二句把$a_scalar变量的值设为5,而且取消了前4个元素的赋值作用.再来看一个例子:print $assoc1,2;print $assoc1,2;第一句打印二维关联数组的一个元素值,而第二句打印一维数组的两个元素值.1.2.4 关联数组变量关联数组变量与数组变量很相似,都可以存储标量变量的表.它们的区别在于数组变量必须通过整数下标来引用数组元素, 而关联数组变量可以通过任何值作为下标而达到访问数组元素的目的.关联数组的下标我们称之为键值(Key),是一种索引值.下面我们通过一个例子来理解:$agesBob=35;$agesMary=25;$,=;print agesBob,Mary;print keys(%ages );for $name(keys(%ages)print $name is $ages$keysn;程序把一个值赋给$,变量,这样以后的print语句的输出会受到影响,关于特殊变量$,我们将在以后介绍.PERL调用关联数组变量时,使用花括号括起键值.agesBob,Mary在花括号内给出了键值,表示引用一个元素,此语句中有两个键值,表示引用数组的一部分,其结果应为(35,25)与($agesBob,$agesMary)语句的结果相同.print keys(%ages)使用了keys运算符.其结果将返回关联数组的所有键值,组成一个表.%ages表示引用整个关联数组.请注意循环语句中的print语句,在这里我们看到了在(双引号)中插入变量的用法,这是非常有用的.在输出结果的时候,变量将被替换成变量的值作为输出的最终结果,这就是所谓的内插法.但是PERL不允许在(单引号)中插入变量!2.PERL运算符2.1算数运算符Perl虽然在变量与数据类型都和大不相同,然而它的运算符和几乎相同,除了的类型转换运算符,指针引用运算符*和结构成员选择符,其他的运算符几乎完全出现在Perl里,Perl新增了几个新运算符,比如在字符处理方面Perl到目前支持的算数运算符有一些几种:+ 加法运算符- 减法运算符* 乘运算符/ 除运算符(只对浮点数运算)% 取模运算符(只对整数运算)下面给出Perl算数运算的一些实例:$x=2.5;$y=3;print ($x+2*$y);print (7/$y);print int(7/$y);print (7%$y);print (7.5%$y);Perl还支持递增和递减运算符:+ 递加- 递减Perl新增了乘方运算符:*,请看下面的例子:$x=2*3; #2的3次方$y=2*0.5; #2的平方根$z=-2*-3; #结果是:-0.1252.2位运算符位运算符对二进制表达式的整数形式进行处理,运算结果为整数如果位运算符的操作数是字符串或分数,Perl首先把它们转换成整数,并用32位长整数形式表示它们Perl支持所有的语言运算符:| 位或运算符& 位与运算符. 位非运算符 位右移运算符有关位运算符的详细内容,请参看语言有关的内容,这里我们就不多讲了,只举几个例子:$x=5;$y=3;print $x | $y; #结果是(二进制表示:111)print $x & $y; #结果是1(二进制表示:001)print $x 1; #结果是2(二进制表示:10)2.3比较运算符比较运算符的功能是比较两个操作数的值Perl在进行比较运算前,会先将字符操作数转换为数字Perl用专门的字符串比较运算符对纯字符进行表运算运算符 等价字符串 含义=!=eqnegtltgelecmp等于不等于大于小于大于等于小于等于不等于(结果带符号)2.4 逻辑运算符 逻辑运算符测试布尔表达式的值,其结果为真或假Perl认为逻辑运算符的每个操作数都为布尔值(即真或假)Perl的逻辑运算符包括:| 逻辑或运算符;& 逻辑与运算符.Perl按从左到右的顺序计算逻辑表达式当逻辑或运算符的一个操作数为真,或者当逻辑与运算符的一个操作数为假时,Perl将终止逻辑表达式的计算Perl利用这种短回路计值快速计算表达式的值因此,这两个运算符也叫短回路和短回路除了以上两个运算符,还有以下三种逻辑运算符:! 负运算符?: 条件运算符, 顺序计值符运算符!否定操作数的布尔值,相当于逻辑非?:条件运算符,有3个操作数,表达形式为:condition?true-result:false-result下面的语句通过?:运算符,实现访问权限的区分:$access=($user eq 流云?root:guest);顺序运算符(,)从严格意义上讲并不是逻辑运算符,因为它并不检查操作数的真假Perl从左到右的计算逗号运算符,并返回最右边的操作数,都好运算符是从延续出来的,具体使用可以参考里的用法,这里我就不累述了2.5 字符运算符由于Perl本身是为文本处理开发的因此,它增加许多新的字符串运算符Perl的字符串运算符包括:. 字符连接运算符x 字符串复制运算符= 将一个变量绑定到模式匹配! 将一个变量绑定到模式匹配,取非前两个运算符比较简单.现在看看例子:print C.a.lx2; #输出结果将是: Call;后两个运算符主要用于模式匹配,以后将会有关于模式匹配的具体讲解,这里就不多说了,我们来看看它们的例子,以了解它们的作用:$text=今天下雨了;print ($text=/下雨/)?今天下雨了:今天没下雨;我们看到的例子可以发现是否变量中是否包含我们所需要的字符串.2.6 赋值运算符赋值运算符和C语言的赋值运算符差不多,以下是各种赋值运算符:= += -= *= /= %= |= &= = = *= .= x=2.7 Lvalue在Perl和语言中,lvalue表示赋值运算符左边的实体也就是说,lvalue与变量一样,可以给它分配值例如在Perl命令文件中不能向字符串赋值,如Bob=32这个语句就是错误的!因为Bob不是一个lvalue,但是如果对$Bob赋值,如$Bob=32,这个语句就是正确的!因为变量$Bob是一个lvalue在Perl中,任何有意义的lvalue只能表示一个实体例如下面的第一个语句列出了表的值(就是数组的值,只不过说法不一样罢了),color就是一个lvalue,第二个语句中,将表的值赋值给3个标量变量,3个变量就是lvalue:color=($r,$g,$b);($r,$g,$b)=color;Perl的赋值运算符对表进行处理时,可以不对整个表进行处理,而只针对表的某一个或者几个元素进行赋值:times2,5,9=(20,40,10);下面的语句把表的前2个值赋给两个标量,其余部分赋给另一个表:($arg1,$arg2,reset)=ARGV;2.8 表运算符Perl包括以下一些表运算符,而没有:, 表构造符. 范围运算符x 表复制运算符前面我们在介绍标量与数组变量时,已经设计到了构造符(我认为叫分隔符,更容易理解些)范围运算符我们在用来创建数组下标范围时,也用到过!不过,请注意它的功能还远不止这个,它还可以用来作为返回从左边操作数到右边操作数之间顺序整数的范围(包括左右两边的操作数)命令文件通常同时利用范围运算符创造一个连续整数表:digits=0.9;这样我们就创造了一个表,其值为(0,1,2,3,4,5,6,7,8,9)表复制运算符是一个非常有趣的东东,我们来看一个例子:copy_3=(1,2,3)x3;这个表有9元素,其值为(1,2,3,1,2,3,1,2,3)怎么样?很方便吧!2.9 文件运算符Perl大大扩展了文件处理运算符Perl至少有27个运算符在不打开文件的情况下,能够测试文件的信息,但是很不幸,由于Perl在最初是UNIX的工具,所以绝大多数的运算符在我们流行的平台上:WIN9X/NT系统无法使用但万幸的是不是全部还有4个运算符绝对可用,而且功能不错哦!一下就是那4个运算符:-d 测试文件是不是一个目录;-e 测试文件是否存在;-s 测试文件的大小;-w 测试文件是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论