2012-03-09 6 views

ответ

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 
3

Чтобы удалить элементы массива, вы можете использовать splice.

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 
Смежные вопросы