2009-10-27 4 views

답변

12

기술적으로 배열의 해시가 아닙니다. 그것은 배열 참조의 해시입니다. 따라서 배열을 길이로 변환하려면 @{...} 연산자와 (선택적으로) 강제 스칼라 컨텍스트로 역 참조해야합니다.

+0

의 필수 언급 http://perlmonks.org/?node=References+quick+reference – ysth

+0

perldsc 및 perllol "해시 배열 배열", "배열 배열"등의 명명법을 사용하십시오. '% HoA'를 쓰는 사람은 아마 perldsc를 읽었을 것입니다. 나는 그것을 싫어하지만, 싸우는 것은 너무 큽니다.) – hobbs

6

배열의 크기를 스칼라 컨텍스트로 평가하여 Perl로 얻을 수 있습니다.

예, 당신은 명시 적으로 같이이 작업을 수행 할 수 있습니다

my $size = scalar @{$HoA{teletubbies}}; 

그러나 당신은 또한이 경우에 암시 적으로 수행 할 수 있습니다

my $size = @{$HoA{teletubbies}}; 

그리고이되는 펄은 또한 다음과 같이 그것을 할 수 :

my $size = $#{$HoA{teletubbies}} + 1; 

(# 연산자는 배열의 마지막 색인을 반환하므로 하나의 t o 그것은 당신에게 그것의 크기를 줄 것이다).

+0

마지막 하나는 여분의 일로 한 눈에 읽을 수 있습니다. 경우에 따라 '더 많은 방법'을 통해 검색 할 이유가 없습니다. – Telemachus

+0

5.10에서도 마지막 항목이 사용되지 않습니다. – sebthebert

+0

'$ #'는'$ ['의 값에 따라 달라집니다. –

0

당신은 단지 그것을 조금 더 추가 한 후 전체 해시를 수행 할 경우

my $size= 0 ; 
foreach (values %HoA) { $size += @$_ } 
관련 문제