我在Apache 2中使用此脚本进行管道日志设置:
#!/usr/local/bin/perl
$|=1; # Use unbuffered output
while (<STDIN>)
{
if (<STDIN> =~ m/(.php|.html|.htm|.dhtml|.cpp|.h|.c|.txt|.pdf|.pl)$/)
{system("beep");}
}
我发送指令%f给它文件名。如您所知,它会检查请求的文件名是否是内容文件。如果是这样,它会告诉系统发出哔哔声。但是,出于某种原因,服务器每两次只能访问内容页面。有谁知道为什么会发生这种情况?
我很确定它与我使用<STDIN>
的方式有关,因为这是我的第一个Perl脚本。
答案 0 :(得分:4)
您使用while()读取第一行,然后在if()中读取另一行。
将'if'更改为:if($ _ =〜...)
答案 1 :(得分:4)
尝试:
while ( <> ) {
system("beep") if /php|pl.../;
}