2010-08-17 2 views
10

배열의 마지막 요소를 제외한 모든 요소를 ​​추출하고 나중에 사용하기 위해 스칼라에 저장해야합니다. 처음에는 배열 슬라이스를 사용하여이 작업을 수행 할 수 있다고 생각했지만 역진으로 계산할 수없는 것처럼 보입니다. 예를 들어 :이 미친 날 운전을 시작으로perl - 마지막 배열을 제외한 배열의 모든 요소를 ​​어떻게 추출합니까?

my $foo = ($bar[0..-2]); 

또는

my $foo = ($bar[-2..0]); 

어떤 도움

이 크게 감상 할 수있다, 나는 다른 곳에서 또는 실험에 의해 해결책을 찾을 수 없었습니다.
오스카

+1

ITYM'@의 foo'와'@bar [...]'. –

답변

16

my $foo = join ',', @bar[0..$#bar-1];

은 (쉼표) 연결할 것 foo.

안부이 스칼라로 마지막을 제외한 모든 배열 요소를 저장할

+1

빠른 답변에 감사 드리며, 많은 시간과 좌절을 덜어 줬습니다. –

2
@foo = @bar[0 .. $#foo - 1]; 

당신이 머리 아마추어 만들려면 : 마지막 하나를 제외한 배열의 모든 요소 @bar에

my @x = (1, 2, 3); 
print "@x[[email protected] .. -2]"; 
2

RBO. 각 배열 요소는 단일 공백으로 구분됩니다.

use strict; 
use warnings; 

my @nums = 1 .. 6; 
my $str = "@nums[0 .. $#nums - 1]"; 
print $str; 

__END__ 

1 2 3 4 5 

요소를 다른 배열에 실제로 저장 하시겠습니까? 스칼라에 저장하면 문제가 될 수 있습니다. 위의 예에서 배열의 요소에 이미 하나의 공백이있는 경우 스칼라에서 배열을 올바르게 재구성 할 수 없습니다.

+1

좋은 답장을 보내 주셔서 감사합니다. 그러나 "forename initial (s) surname"을 "surname, forename initial (s)"으로 바꾸고 싶은데 스칼라로 저장하고 싶습니다. 이미 성을 추출하고 쉼표를 추가했습니다. 그것은 단지 forename과 initial을 얻을 수 없었습니다. –

10
my @foo = @bar; 
pop @foo; 

또는

my @foo = @bar[ [email protected] .. -2 ]; 

하거나 @bar 변경 할 수있는 상태인지

, 단지

my @foo = splice(@bar, 0, -1); 
+0

빠른 답장을 보내 주셔서 감사합니다. 나중에 예제를 기억해두면 유용 할 수 있습니다. –

+0

팝업이 마지막 요소를 제거하기위한 스플 라이스보다 조금 더 멋지다고 생각합니다. –

+0

@brian d foy : 네가 맞다고 생각해.) – ysth

관련 문제