2009-05-21 2 views
2

매 2 안타를 실행하는 스크립트를 파이프. 알 수 있듯이 요청 된 파일 이름이 콘텐츠 파일인지 확인합니다. 그렇다면 경고음이 울리도록 시스템에 알려줍니다. 그러나 어떤 이유로 서버는 콘텐츠 페이지에 액세스 할 때마다 두 번만 경고음을 울립니다. 왜 이런 일이 일어날 지 아는 사람이 있습니까?펄은 로그 만 제가 아파치 2에서 파이프 로그 설정에이 스크립트를 사용하고

저는 이것이 내 첫 Perl 스크립트이므로 <STDIN>을 사용하는 방식과 관련이 있다는 것을 확신합니다.

답변

4

첫 번째 줄은 while()으로 읽은 다음 if()에서 다른 줄을 읽습니다.

변경에게로 '의 경우'경우 ($ _ = ~ ...)

+1

또는 단지의 경우 (/(.php|.html|.htm|.dhtml | .cpp | .h | .c | .txt | .pdf | .pl) $/perl은 $ _에 대한 일치를 나타내지 않는다고 가정합니다. – Copas

4

시도 :

while (<>) { 
    system("beep") if /php|pl.../; 
} 
+0

훨씬 깨끗해 보이지만 if 문이 어떻게 비교되는지는 알 수 없습니다. ~ = 어딘가 필요하지 않니? 또한 을 <>으로 바꾼 이유는 무엇입니까? –

+0

/REGEXP /는 기본적으로 $ ~ = ~ ~/REGEXP /와 같습니다. <>는 명령 행에 지정된 모든 파일을 나타내며 파일이 지정되지 않은 경우 을 나타냅니다. – pts

+0

perldoc perlvar를 참조하십시오. ARGV를 찾으십시오. –

관련 문제