删除Perl数组的元素

时间:2012-03-09 01:11:55

标签: arrays perl elements

是否有一种简单的方法可以删除Perl数组的n个连续元素(从而缩短它的长度)?

3 个答案:

答案 0 :(得分:14)

您正在寻找Perl内置函数splice,它允许您选择一个起点,要删除的元素数量以及可选的替换列表。

my @array = 0 .. 9;

my @slice = splice @array, 3, 3;

say "@slice";   # prints "3 4 5"
say "@array";   # prints "0 1 2 6 7 8 9"
say 0 + @array; # prints 7

答案 1 :(得分:3)

您可以使用splice删除数组元素。

答案 2 :(得分:0)

正如其他答案所示,splice有效。作为替代方法(毕竟是TIMTOWTDI),如果您有要删除的n个连续元素的上下索引,则可以通过grep和数组切片来完成。例如:

use strict;
use warnings;

my @a=("a".."z");

#We will remove the letters "e" through "u"
my $lower=4;
my $upper=20;
print "$_\n" foreach(@a[grep{$_<$lower or $_>$upper}0..$#a]);

输出结果为:

a
b
c
d
v
w
x
y
z