1.Perl数组(1):
1) 初始化数组 @array = ( "stringA" , "stringB" , "stringC" );
2) 使用负索引循环检索 print $array[-1]; #输出索引为(-1 + 3) % 3 = 2 的 stringC
3) 动态增长 $array[4] = "stringD"; #虽然$array[3]还没有使用,但在动态赋值$array[4]的使用,已经对$array[3]赋空置
4) 动态增长后的负索引 print $array[-1]; #输出索引为(-1 + 5) % 5 = 4 的 stringD
5) print @array; #输出数组中所有值的无空格串接
6) print "@array"; #输出数组中所有值的空格分隔列表
2.Perl数组(2):
1) 数组中可以保存不同类型的数据(字符串、数值、数组)
2) $size = @array; 该语句把数组@array的数组长度值给标量$size,但如果在某些函数中直接使用@array,将不一定能得到数组长度
3) $#arrayname,该特殊变量保存着名为arrayname的数组的末尾索引值。
例如: @arr = ( 1,2,3,4,5 );
则$#arr的值为4
$#arr=2; 这样就把数组arr截断,其元素4和5都被释放,数组长度值也被改变
4) @array[-1,4,7] 将分别输出索引值为-1,4,7的元素,这样的调用返回值不是标量,而是数组
5) 多维数组使用多层方括号定义
@D3array = (
[ [1,2,3,4] , [5,6,7] , [8,9,0] ],
[ [ 'str1' , 'str2' , 'str3' ] , [345 , 67 , 8930] ],
[ [ 4,6,7] , [2] , [ "sud" ] ]
);
多维数组中每维的数组长度不需要一致,内部数据元素也不需要一致。
获取第一维的数组长度方式是 $size = @array;
第二维 $size = @{$array[$i]};
第三维 $size = @{$array[$i][$j]};
....... ......
关键是,只要@符号后跟一个数组变量时,就可以获取其长度,但超过一维时,获取数组变量的表达式要用{}包住
3.命令行执行Perl语句
1)perl -e '命令语句' 这样可以直接在命令行执行Perl语句,不过要注意引号匹配规则。
2)perl -ne '命令语句' filename 这样可以逐行读入filename中的数据,然后对每行都以命令语句处理。
例如 a) perl -ne 'print;' abc.txt
在命令行界面逐行输出abc.txt文件的数据
b) perl -ne 'print if /^192/ ' /etc/hosts > ~/hosts.tmp
把UNIX like系统中主机解释文件的内容逐条写到~/hosts.tmp文件下,不过只有符合以192开头的行,才会被写入,因为语句会执行筛选
3)'OS命令' | perl -ne '命令语句' 这样可以把之前执行的OS命令的输出作为输入流,重定向到后面执行的perl命令中。
例如 a) ls -al | perl -ne 'print;'
把当前目录下所有子文件、子目录列出,并作为输入数据输入到perl命令中,再逐条打印
4.Perl引号规则
1)双引号中的内容允许转义和变量解析,缩写是qq/内容/
2)单引号中的任何字符都不会被转义和变量不会被解析,缩写是q/内容/
3)反引号中的内容如果出现OS命令,该命令会被执行,并且结果数组会替换命令位置,或作为赋值的数据,缩写是qx/内容/
新闻热点
疑难解答