Запись в файл без кэша (Perl)
Запись в файл без кэша (Perl) — вопрос записи информации в файле по мере работы скрипта, а не в конце его работы. По умолчанию Perl сохраняет данные вывода в кэше и исторгает их в файл только в конце работы скрипта. Если код работает длительное время, то становится тяжело проконтролировать его выполнение посредством чтения файла из параллельного окна — в том не будет вообще ничего.
Подробности[править]
Так как Perl — эзотерический язык, то для того, чтобы заставить стандартный STDOUT (который выдаётся затем в файл при помощи оператора >, и сохраняется в буфере до момента его заполнения, что может занять немало времени), то надо отдать следующий приказ:
$| = 1;
Либо же, что делает то же самое:
STDOUT->autoflush(1);
После этого каждая операция вывода будет исполнена в файл моментально.
Если надо отправить операцию обновления файла не после каждой операции вывода, а после определённого момента, можно вызвать операцию ->flush() от конкретного потока или файла. Для этого необходимо подключение пакета IO::Handle.