天天看点

转载 bigtiger perl 学习笔记

1,perl中单引号字符串和双引号字符串的区别。

首先单引号没有变量替换功能,因为<$>,<{>,<}>在单引号中都被当作普通字符。

第二反斜线除了<\\>和<\'>外,不支持其他的转义字符。如果只有一个单独<\>,那么还表示反斜线本身。

2,perl中重复操作符的讨论。

在perl中,重复操作符是<x>,小写的x。

"ok\n"x5表示ok加一个换行符,并重复5次。

5x4,表示将字符串5重复4次,生成一个新的字符串。它的实际处理过程为:将数字5转换为字符串"5",然后重复4次。这印证了操作数的数据类型是根据操作符的要求来确定的。

5x4.8,表示将字符串5重复4次,生成一个新的字符串。如果重复次数不是一个整数的话,那么先将它进行floor()操作,再决定重复多少次。重复次数小于1,将产生空字符串。

5x023,表示将字符串5重复19次,这里的重复次数以0开头,表示8进制数字(2*8+3=19)。

5x"023",表示将字符串5重复23次,这里的"023"虽然也会自动转换为数字型,但不会认为它是一个8进制数字。也就是说,用首字符0表示非十进制时,自动转换无效。

3,什么是标量变量?

标量变量仅能含有一个值,变量名字大小写敏感。标量变量在perl中以$开头;在shell中取值时,需要$,赋值时,不需要$;在awk和c中完全不需要$。

4,if控制结构的条件判断部分,使用任意标量值:

如果该值为数字,0为false,其余为true(包括负数)。

如果该值为字符串,空串为false,其余为true。

特殊情况,由于'0'和数字0,具有相同的标量值,perl将它们同等看待,也就是说,字符串'0'是唯一一个非空,但判断为false的字符串。

5,关于chomp操作符。

chomp函数对变量起作用,如果字符串结尾是一个换行符,chomp去掉它,并且只去掉最后一个换行符。

误区:chomp返回去掉结尾回车符后的字符串,原变量内容不变。

真实情况是:chomp修改变量的值(如果需要修改的话),并返回数字1(执行了删除换行符操作),返回0(未执行删除换行符操作)。

chomp可用于含有多个换行符的字符串。

6,正确理解<STDIN>

<STDIN>表示一次标准输入(一般是从键盘),并以换行符结束。

如果有两个<STDIN>则表示两次标准输入,反映在界面上就是两次输入等待。

7,perl中的范围操作符 <..>

例如,($from..$end)创建从$from到$end之间的所有值列表。

正常情况下,左值小于右值。

如果左值等于右值,则列表只有一个元素。

如果左值大于右值,则列表为空。

8,列表赋值

列表可以看作一个变量,所以有:

($first,$second,$third)=("red","green","blue");同时给3个标量赋值。

($first,$second)=($second,$first),交换列表中两个变量的值。

9,pop和push操作

pop操作,从数组中弹出最后一个元素。 既改变了数组,也获得了返回值。

返回值既为弹出元素的值。是一个标量。

push操作,可以将一个元素(或一列元素)加在数组末尾。例如push @array,1,2,9。

它也改变了数组,同时也有一个返回值,返回值是改变后数组元素的总个数。

相应的shift和unshift对数组开头执行类似的操作。

10,reverse操作和sort操作,都不会改变原数组(列表)的内容。

本文出自 51CTO.COM技术博客

继续阅读