Скриптовый Perl-скрипт запускается только каждые 2 попадания - PullRequest
2 голосов
/ 21 мая 2009

Я использую этот скрипт для настройки журналов в 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 ]

4 голосов
/ 21 мая 2009

Попробуйте:

while ( <> ) {
  system("beep") if /php|pl.../;
}
4 голосов
/ 21 мая 2009

Вы читаете первую строку с помощью while (), а затем читаете другую в if ().

Измените 'if' на: if ($ _ = ~ ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...