Perl管道日志脚本仅每2次点击运行一次

时间:2009-05-21 00:07:53

标签: perl apache2 logging

我在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脚本。

2 个答案:

答案 0 :(得分:4)

您使用while()读取第一行,然后在if()中读取另一行。

将'if'更改为:if($ _ =〜...)

答案 1 :(得分:4)

尝试:

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