perl语言小技巧之按下标删除数组元素
【文章来自:古风】

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";

结果: