Может быть, вы недостаточно терпеливы? Я вижу, что сценарий ждет 3 минуты, прежде чем выйти.
Обратите внимание, что $|
работает только для выбранного в настоящий момент дескриптора файла , что означает STDOUT
здесь.
Вы можете установить его для любого дескриптора файла в старой школе, сложным способом:
{
my $old = select $log;
$| = 1;
select $old;
}
или, если ваш файловый дескриптор происходит от определенного класса - и, возможно, автовивифицированные дескрипторы принадлежат этому классу - тогда вы можете использовать метод autoflush
, который намного проще для вас, но делает то же вещь под капотом:
$log->autoflush(1); # untested
Будем надеяться, что последний работает.
См. IO :: Handle и FileHandle для autoflush
- они связаны, но я не уверен, что здесь применимо.