open my $LOG, "<", $log or die "Could not OPEN log file $log";
while (my $loglines = <$LOG>) {
if ($loglines =~ /Error/) {
print "Error on the log\n";
last;
}
}
close($LOG);
В этом много улучшений.Наиболее важным изменением является добавление last;
;он завершает цикл при первом совпадении.
Другие изменения:
- Использование дескриптора лексического файла.
- Использование открытия с тремя аргументами.
- Использование '
or
' вместо '||
'. - Локальная переменная для
$loglines
(при условии, что она вам не нужна / не используется в другом месте). - Ошибкасообщение указывает, какой файл не может быть открыт (проще для отладки!).
- Нет пробела в печатной строке сообщения.
Некоторые предпочитают метку, добавленную в цикл, а затемЯвное использование этого в выражении last
:
open my $LOG, "<", $log or die "Could not OPEN log file $log";
LOG_READER:
while (my $loglines = <$LOG>) {
if ($loglines =~ /Error/) {
print "Error on the log\n";
last LOG_READER;
}
}
close($LOG);
Я не уверен, что здесь есть большой выигрыш, предполагая, что в нем нет замкнутых циклов.Если есть какие-либо замкнутые циклы, тогда используйте метку.
Я предполагаю, что вы используете:
use strict;
use warnings;
вверху вашего скрипта?Если нет, то сделай так.Эксперты Perl используют их, чтобы избежать глупых ошибок;Новички в Perl должны использовать их по тем же причинам.