您好,欢迎访问三七文档
perl教程第一节:基本上,简单变量就是一个数据单元,这个单元可以是数字或字符串。一、整型1、整型PERL最常用的简单变量,由于其与其它语言基本相同,不再赘述。例:$x=12345;if(1217+116==1333){#statementblockgoeshere}整型的限制:PERL实际上把整数存在你的计算机中的浮点寄存器中,所以实际上被当作浮点数看待。在多数计算机中,浮点寄存器可以存贮约16位数字,长于此的被丢弃。整数实为浮点数的特例。2、8进制和16进制数8进制以0打头,16进制以0x打头。例:$var1=047;(等于十进制的39)$var2=0x1f;(等于十进制的31)二、浮点数如11.4、-0.3、.3、3.、54.1e+02、5.41e03浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意。指数的范围通常为-309到+308。例:#!/usr/local/bin/perl$value=9.01e+21+0.01-9.01e+21;print(firstvalueis,$value,\n);$value=9.01e+21-9.01e+21+0.01;print(secondvalueis,$value,\n);---------------------------------------------------------$program3_3firstvalueis0secondvalueis0.01三、字符串惯用C的程序员要注意,在PERL中,字符串的末尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。.双引号内的字符串中支持简单变量替换,例如:$number=11;$text=Thistextcontainsthenumber$number.;则$text的内容为:Thistextcontainsthenumber11..双引号内的字符串中支持转义字符Table3.1.Escapesequencesinstrings.EscapeSequenceDescription\aBell(beep)\bBackspace\cnTheCtrl+ncharacter\eEscape\EEndstheeffectof\L,\Uor\Q\fFormfeed\lForcesthenextletterintolowercase\LAllfollowinglettersarelowercase\nNewline\rCarriagereturn\QDonotlookforspecialpatterncharacters\tTab\uForcenextletterintouppercase\UAllfollowinglettersareuppercase\vVerticaltab\L、\U、\Q功能可以由\E关闭掉,如:$a=T\LHISISA\ESTRING;#sameasThisisaSTRING.要在字符串中包含双引号或反斜线,则在其前加一个反斜线,反斜线还可以取消变量替换,如:$res=Aquote\andAbackslash\\;$result=14;print(Thevalueof\$resultis$result.\n)的结果为:Thevalueof$resultis14..可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如:$result=\377;#thisisthecharacter255,orEOF$result=\xff;#thisisalso255.单引号字符串单引号字符串与双引号字符串有两个区别,一是没有变量替换功能,二是反斜线不支持转义字符,而只在包含单引号和反斜线时起作用。单引号另一个特性是可以跨多行,如:$text='Thisistwolinesoftext';与下句等效:$text=Thisistwo\nlinesoftext\n;.字符串和数值的互相转换例1:$string=43;$number=28;$result=$string+$number;#$result=71若字符串中含有非数字的字符,则从左起至第一个非数字的字符,如:$result=hello*5;#$result=0$result=12a34+1;#$result=13.变量初始值在PERL中,所有的简单变量都有缺省初始值:,即空字符。但是建议给所有变量赋初值,否则当程序变得大而复杂后,很容易出现不可预料且很难调试的错误。第二节:一、算术操作符:+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)(1)乘幂的基数不能为负,如(-5)**2.5#error;(2)乘幂结果不能超出计算机表示的限制,如10**999999#error(3)取余的操作数如不是整数,四舍五入成整数后运算;运算符右侧不能为零(4)单目负可用于变量:-$y;#等效于$y*-1二、整数比较操作符Table3.1.整数比较操作符操作符描述小于大于==等于=小于等于=大于等于!=不等于=比较,返回1,0,or-1操作符=结果为:0-两个值相等1-第一个值大1-第二个值大三、字符串比较操作符Table3.2.字符串比较操作符操作符描述lt小于gt大于eq等于le小于等于ge大于等于ne不等于cmp比较,返回1,0,or-1四、逻辑操作符逻辑或:$a||$b或$aor$b逻辑与:$a&&$b或$aand$b逻辑非:!$a或not$a逻辑异或:$axor$b五、位操作符位与:&位或:|位非:~位异或:^左移:$x1右移:$x2注:不要将&用于负整数,因为PERL将会把它们转化为无符号数。六、赋值操作符Table3.3.赋值操作符操作符描述=Assignmentonly+=Additionandassignment-=Subtractionandassignment*=Multiplicationandassignment/=Divisionandassignment%=Remainderandassignment**=Exponentiationandassignment&=BitwiseANDandassignment|=BitwiseORandassignment^=BitwiseXORandassignmentTable3.4.赋值操作符例子表达式等效表达式$a=1;none(basicassignment)$a-=1;$a=$a-1;$a*=2;$a=$a*2;$a/=2;$a=$a/2;$a%=2;$a=$a%2;$a**=2;$a=$a**2;$a&=2;$a=$a&2;$a|=2;$a=$a|2;$a^=2;$a=$a^2;.=可在一个赋值语句中出现多次,如:$value1=$value2=astring;.=作为子表达式($a=$b)+=3;等价于$a=$b;$a+=3;但建议不要使用这种方式。七、自增自减操作符:++、--(与C++中的用法相同).不要在变量两边都使用此种操作符:++$var--#error.不要在变量自增/减后在同一表达式中再次使用:$var2=$var1+++$var1;#error.在PERL中++可用于字符串,但当结尾字符为'z'、'Z'、'9'时进位,如:$stringvar=abc;$stringvar++;#$stringvarcontainsabdnow$stringvar=aBC;$stringvar++;#$stringvarcontainsaBDnow$stringvar=abz;$stringvar++;#$stringvarnowcontainsaca$stringvar=AGZZZ;$stringvar++;#$stringvarnowcontainsAHAAA$stringvar=ab4;$stringvar++;#$stringvarnowcontainsab5$stringvar=bc999;$stringvar++;#$stringvarnowcontainsbd000.不要使用--,PERL将先将字符串转换为数字再进行自减$stringvar=abc;$stringvar--;#$stringvar=-1now.如果字符串中含有非字母且非数字的字符,或数字位于字母中,则经过++运算前值转换为数字零,因此结果为1,如:$stringvar=ab*c;$stringvar++;$stringvar=ab5c;$stringvar++;八、字符串联结和重复操作符联接:.重复:x联接且赋值(类似+=):.=例:$newstring=potato.head;$newstring=tx5;$a=be;$a.=witched;#$aisnowbewitched九、逗号操作符其前面的表达式先进行运算,如:$var1+=1,$var2=$var1;等价于$var1+=1;$var2=$var1;使用此操作符的唯一理由是提高程序的可读性,将关系密切的两个表达式结合在一起,如:$val=26;$result=(++$val,$val+5);#$result=32注意如果此处没有括号则意义不同:$val=26;$result=++$val,$val+5;#$result=27十、条件操作符与C中类似,条件?值1:值2,当条件为真时取值1,为假时取值2,如:$result=$var==0?14:7;$result=43+($divisor==0?0:$dividend/$divisor);PERL5中,还可以在赋值式左边使用条件操作符来选择被赋值的变量,如:$condvar==43?$var1:$var2=14;$condvar==43?$var1=14:$var2=14;十一、操作符的次序Table3.6.操作符次序操作符描述++,--自增,自减-,~,!单目**乘方=~,!~模式匹配*,/,%,x乘,除,取余,重复+,-,.加,减,联接,移位-e,-r,etc.文件状态,=,,=,lt,le,gt,ge不等比较==,!=,=,eq,ne,cmp相等比较&位与|,^位或,位异或&&逻辑与||逻辑或..列表范围?and:条件操作符=,+=,-=,*=,赋值andsoon,逗号操作符notLow-precedencelogicalNOTandLow-precedencelogicalANDor,xorLow-precedencelogicalORandXOR.操作符结合性(associativity):Table3.7.操作符结合性操作符结合性++,--无-,~,!Right-to-left**Right-to-left=~,!~Left-to-right*,/,%,xLeft-to-right+,-,.Left-to-right,Left-to-right-e,-r,无,=,,=,lt,le,gt,geLeft-to-right==,!=,=,eq,ne,cmpLeft-to-right&Left-to-right|,^Left-to-right&&Left-to-right||Left-to-right..Left-to-right?and:Right-to-left=,+=,-=,*=,Right-to-leftandsoon,Left-to-rightnotLeft-to-rightandLeft-to-rightor,xorLeft-to-right建议:1、当你不确定某操作符是否先执行时,一定要用括号明确之。2、用多行、空格等方式提高程序的可读性。第三节:一、列表列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1,5.3,hello,2),空列表:()。注:只含有一个数值的列表(如:(43.2))与该数值本身(即:43.2)是不同的,但它们可以互相转化或赋值。列表例:(17,$var,astring)(17,262)(17,$va
本文标题:perl零基础教程
链接地址:https://www.777doc.com/doc-2886299 .html