나는 해시의 배열이 있습니다Perl에서 해시 배열을 값 배열로 변환하려면 어떻게해야합니까?
my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };
을 나는 모든 이름 (A CGI 팝업 메뉴에 표시)의 배열을 얻을합니다. 나는이 그렙 문을 사용하여 시도 :
my @names = grep { $_->{name} } @sports;
하지만 그냥 해시 값의 배열을 반환 ... 그래서
나는 현재 다른로 밀어 모든 값을 반복하는 루프를 사용에 의존하고
정렬.속도를 높이는 방법이 있습니까?
모든 단계를 보여주고 있다는 것을 알고 있지만 임시 변수'@ names'를 건너 뛸 수 있습니다 :'print map $ _-> {name}, @ sports'. –
@briandfoy - 오히려 :'지도 $ _-> {name}, @ sports'로 인쇄하십시오. 그렇지 않으면 모든 스포츠가 하나의'RugbyFootball'에 함께 정리됩니다. 'print for LIST'를 커맨드 라인에서'-l'과 함께 사용합니다 :'perl -lwe "정렬 키 % main ::"'를 출력하십시오. – Lumi
감사! 귀하의 속도 논쟁을 이해합니다 (처리 기간). 나는 그것이 더 적은 타이핑이라고 더 잘 묘사 할 수 있다고 생각한다. 어디에서 데이터를 가져올 지에 따라 이름 배열을 만들기 위해 별도의 장소에 두 개의 루프가 있음을 의미합니다. 지도를 통해 한 곳에서 할 수 있습니다. – skeniver