2012-03-09 3 views
1

Perl 배열의 n 개의 연속 요소를 쉽게 제거 할 수 있습니까? (길이를 더 짧게 만들 수 있습니까?)Perl 배열 요소 제거

답변

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