2010-01-08 1 views

답변

37

당신은 (1)가 두 번째 요소가 아닌 첫 번째,

my @slice = @rainbow[0 .. $#rainbow - 5]; 

조심합니다. perlop에 설명 된 range operator의 처음 두 문장에서

+3

누군가가 $ # 배열이 의미하는 것을 찾을 필요가있는 경우를 대비하여 http://stackoverflow.com/questions/8618858/how-do-dollar-and-number-sign-together-work-in-perl –

+0

감사합니다. @ Chas, 그것은 나를 위해 일했다. –

18

.. 조작자가 우측 값 왼쪽 range 형성 - 우측에는 이상이면 왼쪽. 또한 Perl에서는 배열 인덱싱이 0에서 시작됩니다.

어때요?

$#array은 배열의 마지막 요소 색인을 제공합니다.

5

:

이진 ".."상황에 따라 정말 두 개의 서로 다른 통신 사업자 인 범위 연산자이다. 목록 컨텍스트에서는 왼쪽 값에서 오른쪽 값까지 (1만큼 위로) 계산하는 값 목록을 반환합니다. 왼쪽 값이 올바른 값보다 큰 경우 빈 목록을 반환합니다.

코드가 작동하지 않으면 코드를 분석하여 현재 상황을 확인하십시오. 예를 들어, 당신이 그것을 생산 된 것을 볼 수있는 범위 연산자를 시도 할 것입니다 :

my @indices = 1 .. -5; 
print "Indices are [@indices]\n"; 

당신은 빈 목록을 가지고 당신이 이해하지 못하는 것을 계속 무언가가 있다는 것을 깨달았을 때, 당신이 무엇에 대한 설명서를 확인 당신이해야한다고 생각하는 것을하고 있는지 확인하려고 노력합니다. :)

관련 문제