1、数组拼接函数:splice
用于向列表或数组中插入元素或子列表,也可以从数组或列表中删除元素或子列表,还可以替换数组或列表中的元素或子列表;其原形如下:
@RetValue = splice(@Array,SkipElements,Length,@NewList);
参数SkipElements是拼接前跳过的元素数目,即:从第SkipEllements个元素处开始拼接;Length表示将要被替换掉的元素数;@NewList是将要拼接近来的数组或列表;当@NewList的长度大于Length时,后面的元素自动向后移动,反之则向前移动;因此,当Length == 0时,就相当于向数组或列表中插入元素;如:
splice(@Array ,-1,0,“Hello”);#表示想数组尾部添加一个元素;
当@NewList为空的时候,就相当于从数组或列表中删除元素或子列表;这时,如果Length为空,则就把第SkipElements个元素之后的元素全部删除;如:
splice(@Array,5) ; # 表示把第6个元素后面的元素全部删除;
splice(@Array,-1); #表示删除数组或列表中的最后一个元素;返回值为被删除元素的列表;
splice(@Array,5,1);#删除数组@Array中的第6个元素之后的那个元素;
2、数组排序函数:sort() / reverse()
sort()函数为数组或列表排序,返回排序后的数组或列表;
reverse()函数使数组或列表中的所有元素按照字母顺序逆需排列,返回处理后的数组或列表;
3、队列函数:
Perl中可以把数组或列表看成队列来使用;
队头操作函数:shift()和unshitf()
$Element = shift(@Array):删除数组中的第一个元素,剩下的元素全部向前移动,并返回被删除的元素;不加参数时,默认对数组@ARGV进行操作;
$Count = unshift(@Array,Elements):这个函数的功能shift()相反,它在数组的第一个元素之前增加一个或多个元素,返回值为结果列表或数组的长度;
队尾操作函数:push()和pop()
$Element = pop(@Array):删除数组的最后一个元素,并返回这个被删除的元素;当列表已空,则返回未定义值(即:空值);
$Count = push(@Array,Elements):在数组或列表的尾部增加一个或多个元素,并返回结果列表或数组的长度;
4、vec函数:vec()
vec是矢量函数,它把简单变量$Vector的值看作多块(维)数据,每块数据中含有一定数量的位(bit),合起来即为一个矢量数据。每次调用访问其中的一块数据,可以读娶,也可以写入,参数$Index就像是数组的下标一样,指出访问哪一块,0为第一块,依次类推,需要注意的是,访问次序是从右到左,即:第一块在最右边;参数bits指定每一块中的位数,可以取值位1、2、4、8、16或32;调用方法如下:
$RetVal = vec($Vector,$Index,$bits);
5、其它数组函数
@ResultList = map(Expr,@List);
该函数把@List中的各个元素作为表达式Expr的操作数进行计算,耳@List中的元素本身保持不变,把对@List中的各个元素的处理结果存入到一个新的数组或列表中,并把这个新的数组或列表作为返回值;在表达式Expr中,系统变量“$_”表示@List中的各个元素;
$FormatString = pack(PackFormat,@List):把一个列表或数组以在机器中存储的格式或C等编程语言所使用的格式转化(包装)到一个简单变量中;参数PackFormat中包含一个或多个格式字符,列表@List中每个元素对应一个,各个格式字符间可用空格或tab键隔开,pack()函数会忽略空格;
对于参数PackFormat中存放的格式字符来说,要重复使用某一格式多次的话,可在这个格式字符后面加上表示一个表示使用次数的整数;
如:$TwoInts = pack(“i2”,103,241); #“i2”表示需要使用格式i2次;
而如果要把同一个格式应用到数组或列表中的所有元素上,可在该格式字符后面加上一个星号“*”;如:
$ManyInts = pack(“i*”,14,26,11,83);
其它相关格式字符,在编写Perl程序的时候可以随时查阅相关文档;
pack()函数最常见的用途就是创建可与C程序交互的数据;如:C中的字符串以空字符NULL或0或‘/0’结束,则在Perl中可创建这样的字符串数据:
$CString = pack(“ax”,$MyString);
@List = unpack(PackFormat,$FormatString):该函数的功能与pack()函数的功能相反,用于把以机器格式存储的值转化成Perl中值的列表;其格式字符与pack()函数的基本相同;