2014-07-17 3 views
1

'type'속성 값을 찾기 위해 전체 객체를 반복하지 않고 더 쉬운 방법이 있습니까?연관 배열의 perl 속성에 액세스

[ 
    { type => "voipPassword", vals => ["data"] }, 
    { type => "sn", vals => ["data"] }, 
    { type => "voipExtension", vals => [data] }, 
    { type => "cn", vals => ["data"] }, 
    { type => "telephoneNumber", vals => [data] }, 
    { type => "objectClass", vals => ["data"] }, 
    { type => "phoneMAC", vals => ["data"] }, 
] 

답변

0

직접이 예처럼 type에 액세스 할 수 있습니다

#!/usr/bin/perl 
use strict; 
use warnings;  

my $ref = [ 
      { type => "voipPassword", vals => ["data"] }, 
      { type => "sn", vals => ["data"] }, 
      { type => "voipExtension", vals => ["data"] }, 
      { type => "cn", vals => ["data"] }, 
      { type => "telephoneNumber", vals => ["data"] }, 
      { type => "objectClass", vals => ["data"] }, 
      { type => "phoneMAC", vals => ["data"] }, 
      ]; 

print $ref->[0]->{'type'} . "\n"; 
print $ref->[1]{'type'} . "\n"; 

출력 :

voipPassword 
sn 

은 자세한 내용은 perlreftut를 참조하십시오.

+0

이것에 감사 드리며,이 중 일부는 반복적으로 실행됩니다.이 중 일부는 7 가지 유형이 있습니다. 즉, '/ SCRIPT 27 행의 문자열 eq에 초기화되지 않은 값 사용, 522 행'입니다. is is ' 스크립트를 잘못 처리했지만 결과를 잘 사용할 수 없다는 것을 의미합니다.이를 억제 할 수있는 방법이 있습니까? 평가를 사용했지만 메시지를 표시하지 않습니다. – user3778934

+1

'eval'은 경고가 아닌 예외 (즉, '죽는')를 피하기 때문입니다. '$ ref -> [0] {type}'이 정의되어 있지 않으면'$ type'을위한 기본값을 제공하는'my $ type = $ ref -> [0] {type} // "default";와 같은 것을 시도해보십시오 . 또는, 도움이되지 않는다는 경고를 끄십시오 ... '경고가 없습니다. qw (초기화되지 않았습니다); – tobyink