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操作,都不会改变原数组(列表)的内容。