Perl에서 한 줄의 foreach
루프를 사용할 수 있습니까?Perl foreach 루프를 한 줄로 작성할 수 있습니까?
$hash{$thing}++ foreach my $thing (@things);
나는
die "Invalid file!\n" if (open($Handle, "file.txt"));
나는 열려있는 문이 어쩌면 깨진 것을 알고,이 같은 많은 다른 명령 가능합니다 알고 : 거의
Perl에서 한 줄의 foreach
루프를 사용할 수 있습니까?Perl foreach 루프를 한 줄로 작성할 수 있습니까?
$hash{$thing}++ foreach my $thing (@things);
나는
die "Invalid file!\n" if (open($Handle, "file.txt"));
나는 열려있는 문이 어쩌면 깨진 것을 알고,이 같은 많은 다른 명령 가능합니다 알고 : 거의
. foreach는 접미사에서는 _ $를 사용해야합니다
$hash{$_}++ foreach @things;
또는 동등 (for
및 foreach
때문에 구문 별칭된다) :
$hash{$_}++ for @things;
+1은 간결하고 'for'는. –
방금 게시 한 후에 알게되었지만 신속한 회신에 감사드립니다. 한 문장에서 명명 된 변수가 과도한 공격이라고 깨달았습니다. –
이 구문을 문서화 한 곳을 알려주십시오. perlsyn 페이지는 이것을 언급하지 않습니다. – user907860
당신은 할 수 있습니다 :
foreach my $thing (@things) {$hash{$thing}++};
경우 어휘 적으로 범위가 지정된 변수를 사용하여 한 줄에 표시 할 수 있습니다. foreach
을 반전하고 루프 범위 변수를 유지할 수 없습니다.
"foreach를 반전 할 수없고 루프 범위 변수를 유지할 수 없습니다." 그 이름으로 말하면 안돼,하지만 뭐? 한 줄짜리'foreach'는 명명 된 화제를 필요로하지 않습니다. '$ hash {$ _} ++ for @ things'은 해쉬 ** it **를 각 일에 대해, 또는 더 많은 영어로, 해시로 ** ** 일들을 말합니다. '$ _'는 "it"으로 읽어야한다는 것을 기억하십시오. 그리고 "it"은 루프 스코프 된 변수가 될 것이 보장됩니다. 게다가 그것은 루프에 어휘 적으로 범위가 지정된 아주 새로운 private 변수가 될 것입니다 ** IFF ** 그 이름으로 남아있는 어휘 (read :'$ _')가 이미 범위에 있고 다른 경우에는 동적으로 범위가 있다면. 어느 쪽이든 여전히 루프 스코프입니다. – tchrist
@Zaid : "인라인 루프"? 어쩌면 그것은 나 일 뿐이었지만 이전 제목은 더 알기 쉽습니다./ – musiKk
@musiKk : Revised. – Zaid
두 번째 문장에서 :'if'를'unless'로 변경하거나보다 일반적인 숙어 (및 3arg 열기 및 어휘 핸들)'open $ handle, < ','file.txt '또는 die "파일 열기 오류 : $! ";'물론 파일을 읽기보다는 열기 위해서''> ''를 사용하십시오. –