Я полагаю, что из вашего последнего комментария вы заинтересованы в том, чтобы узнать, как найти последнюю отметку времени в вашем журнале и записи за 5 минут до этого.
Я думаю, что решение Джима Гаррисонаможет быть исправлено, чтобы заменить это:
$now = time();
на это:
open F, "<server.log" or die $!;
seek F,-1000,2; # set pos to last 1000 bytes
my @f = <F>;
$_ = $f[$#f];
($yy,$mm,$dd,$h,$m,$s,$t) = /^(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+),(\d+)/;
$now = mktime($s+$t/1000, $m, $h, $dd, $mm-1, $yy-1900);
$now
теперь должен содержать последнюю метку времени в журнале.
I приблизительно "-1000 ", чтобы быть достаточно длинным, чтобы пройти хотя бы одну строку в журнале.Вы можете установить его намного выше, если вы ожидаете, что в журнале будут длинные строки, но, как я увидел, последняя запись в журнале «должна» быть довольно короткой.
Если у вас огромный файл журнала и вы хотитеЧтобы повысить производительность в следующем поиске, вы можете использовать оценку и выполнить поиск, чтобы найти последние, скажем, 1000000 байт в файле с:
seek F, -1000000, 2;
Удачи!