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技术博客 |