В документации много хорошего, включая ответ на этот точный вопрос.От ответа perlfaq5 до Как мне сделать "tail -f" в perl?
Первая попытка
seek(GWFILE, 0, 1);
Оператор search (GWFILE, 0, 1) не меняет текущую позицию, но очищает условие конца файла в дескрипторе, так что следующий заставляет Perl снова попытаться что-то прочитать.
Если это не сработает (это зависит от особенностей вашей реализации stdio), то вам нужно что-то более похожее на это:
for (;;) {
for ($curpos = tell(GWFILE); <GWFILE>; $curpos = tell(GWFILE)) {
# search for some stuff and put it into files
}
# sleep for a while
seek(GWFILE, $curpos, 0); # seek to where we had been
}
Если это по-прежнему не работает, изучите метод clearerr изIO :: Handle, который сбрасывает состояние ошибки и конца файла в дескрипторе.
Также имеется модуль File :: Tail из CPAN.