splice 拼接函数
调用语法:
@retval = splice (@array, skipelements, length, @newlist);
拼接函数可以向列表(数组)中间插入元素、删除子列表或替换子列表。
参数skipelements是拼接前跳过的元素数目,length是被替换的元素数,newlist是将要拼接进来的列表。
当newlist的长度大于length时,后面的元素自动后移,反之则向前缩进。
因此,当length=0 时,就相当于向列表中插入元素,而形如语句 splice (@array, -1, 0, "Hello"); 则向数组末尾添加元素。
而当newlist为空时就相当于删除子列表,这时,如果length为空,就从第skipelements个元素后全部删除,而删除最后一个元素则为:splice (@array, -1);这种情况下,返回值为被删去的元素列表
#!perl
use strict;
my @array;
# 删除数组第一个元素(相当于shift)
@array = ('first', 'second', 'third', 'fourth');
splice (@array, 0, 1);
print "@array\n";
# 删除数组第二个元素
@array = ('first', 'second', 'third', 'fourth');
splice (@array, 1, 1);
print "@array\n";
# 删除数组最后个元素 (相当于pop)
@array = ('first', 'second', 'third', 'fourth');
splice (@array, $#array, 1);
print "@array\n";
# 删除数组最后个元素 (相当于pop)
@array = ('first', 'second', 'third', 'fourth');
splice (@array, -1);
print "@array\n";
# 在数组开头添加元素 (相当于unshift)
@array = ('first', 'second', 'third', 'fourth');
splice (@array, 0, 1, "add" );
print "@array\n";
# 在数组开头添加元素 (相当于push)
@array = ('first', 'second', 'third', 'fourth');
splice (@array, -1, 1, "add" );
print "@array\n";
结果: