일부 Perl 스크립트를 수정해야하며이 언어를 처음 사용합니다.Perl에서 의미가있는 것은 무엇입니까?
print for (@$result);
내가 $가 전체 배열을 반환 $ 결과 @ 배열을 참조하고 인 결과를 알고 : 나는 다음과 같은 성명을 발생했습니다. 는을 의미합니까?
미리 감사드립니다.
일부 Perl 스크립트를 수정해야하며이 언어를 처음 사용합니다.Perl에서 의미가있는 것은 무엇입니까?
print for (@$result);
내가 $가 전체 배열을 반환 $ 결과 @ 배열을 참조하고 인 결과를 알고 : 나는 다음과 같은 성명을 발생했습니다. 는을 의미합니까?
미리 감사드립니다.
for (@$result) { print; }
에 해당하며, for (@$result) { print $_; }
에 해당합니다. $_
은 현재 요소를 나타냅니다.
Perl에는 암시 적 변수와 같은 것이 있습니다. 이미 $_
으로 보셨을 것입니다. 기본적으로 $_
에서 작동하는 perl에는 많은 내장 함수가 있습니다.
$_
은 루프와 같은 다양한 장소에 설정됩니다. 그래서 당신은 할 수 있습니다 :이 라인의 각 $_
을 사용하고 잘 지내을 수정하는 것입니다
while (<$filehandle>) {
chomp;
tr/A-Z/a-z/;
s/oldword/newword/;
print;
}
. 귀하의 for
루프도 동일하게 진행됩니다. 루프의 각 반복은 $_
을 현재 값으로 설정하고 print
은 기본적으로이를 수행합니다.
유용하고 영리한 반면 혼란스럽고 이해하기 어려운 코드를 작성하는 좋은 방법이기도합니다. 예를 들어 중첩 루프에서 $_
을 사용하면 실제로 어떤 일이 벌어지고 있는지 확실히 알 수 없습니다.
을 피 명시 적으로 작성 - 당신이 할 필요가있는 경우, 당신은 제대로 변수를 명명 실제로 고려해야한다.
어떤 일이 벌어지고 있는지 명확하게 보여주는 곳에서만 사용하십시오. 경험적으로 말하면, 두 번 이상 사용하는 경우 은 아마도 명명 된 변수를 사용해야합니다.
파일 핸들을 반복 할 경우 특히 유용합니다. 예컨대 :
while (<$filehandle>) {
next unless m/keyword/; #skips any line without 'keyword' in it.
my ($wiggle, $wobble, $fronk) = split (/:/); #split $_ into 3 variables on ':'
print $wobble, "\n";
}
단지 즉시 폐기, <$filehandle>
에서 선을 캡처하는 변수 이름을 할당 중복 될 것이다 - 따라서 대신에 우리는 3 개 값을 추출하기 위해 기본적으로 $_
을 사용 split
를 사용합니다.
무슨 일이 일어나는지 파악하기가 어렵다면 더 유용한 방법 중 하나는 perl -MO=Deparse
을 사용하여 스크립트의 '구문 분석 된'버전을 다시 인쇄하는 것입니다. 이 예에서 그래서 당신은 제공 :
foreach $_ (@$result) {
print $_;
}
확인 [문 수정]을 (http://perldoc.perl.org/perlsyn.html#Statement-Modifiers) –
또한이 단지'로 작성했습니다 수 있습니다 print @ $ result; ' – Miller