2010-12-28 3 views

답변

3

List :: MoreUtils는 핵심 모듈이 아니므로 CPAN에서 설치해야합니다. 적어도 Perl documentation은 그것을 문서화하지 않습니다.

+0

덕분에, 아무 Repititions 경우에도 작동한다고 가정합니다 – syllogismos

+0

@ 리모 경로 : 예, 그것은 반복없이 작동합니다 - 그건 그냥 당신이 마지막 인덱스 (당신이 사용할 수있는 함수'lastidx') 나 N 번째 인덱스, 또는 이상한 것을 원하지 않는다는 것을 확인합니다. –

+0

나는 모듈을 사용하는 방법을 모른다. 그래서 당신은 코어 모듈만을 사용하여 인덱스를 얻는 직접적인 방법이 없다고 확신합니까? – syllogismos

1

만약 당신이 가진 모든 것이 참조라면 (예를 들어, \$a[1]) 나는 방법이 없다는 것이 확실합니다. 그러나 당신이 말했던 것을 감안할 때 물론 "b"에 대한 루프가있는 배열을 검색 할 수 있었고 발견했을 때 어떤 인덱스인지 알 수있었습니다.

다음
@a = qw(a b b c); 

사용 모듈 List::MoreUtilsfirstidx (일명 first_index) :

use List::MoreUtils qw{ firstidx }; 

print firstidx { $_ == 'b' } @a; 

유일한 단점에 "B"를 검색 할 때 '대답이'여전히 1이라고 가정

+0

나중에 내가 그렇게 할 수 있지만, 해시 당신이 해시를 반전 할 수 있습니다 값을 기반으로 키를 찾으십시오, 배열에 그것을 할 수있는 쉬운 방법이 있는지 궁금 해서요 – syllogismos

6

자주이 작업을 수행 할 필요가있는 경우, 당신은 (배열 또는 대신 추가) 해시 할 수 있습니다 :

my @array = qw(a b c); 
my %hash; 
@hash{ @array } = 0..$#array; 
print $hash{b}; # 1 
+0

당신은 @ 배열의 ​​마지막 색인을 의미합니까? – syllogismos

+1

@RemotePath : $ # array는 @array의 마지막 색인입니다. 예. $ # (뒤에 식별자가없는)은 다른 것으로 사용되지 않으며 더 이상 사용되지 않습니다. – ysth

관련 문제