Оператор Perl: $| ++; долларовый знак плюс плюс плюс

Я работаю над новой версией уже выпущенного кода perl и нашел строку:

$|++;

AFAIK, $| связан с трубами, как описано в этой ссылке, и я это понимаю, но я не могу понять, что означает ++ (плюс плюс).

Спасибо заранее.

EDIT: Найден ответ в этой ссылке:

Вкратце: он заставляет печатать (flush) на консоль перед следующим оператором, если script слишком быстро.

Иногда, если вы помещаете оператор печати внутри цикла, который работает очень быстро, вы не увидите вывод своей инструкции печати до тех пор, пока программа не завершится. иногда вы даже не видите вывод. решение этой проблемы - "сбросить" выходной буфер после каждого оператора печати; это может быть выполнено в perl со следующей командой:

$|++;

[обновление] как было отмечено г. schwartz, ive misspoken; приведенная выше команда заставляет печать сбросить буфер до следующего вывода.

Ответы

Ответ 1

$| по умолчанию 0; выполнение $|++ таким образом увеличивает его до 1. Установка его на ненулевое значение позволяет включить автозапуск в текущем выбранном дескрипторе файла, который по умолчанию равен STDOUT и редко изменяется.

Таким образом, эффект заключается в том, чтобы операторы print и т.д. Это полезно, если вы выводите на сокет или т.п.

Ответ 2

$| является сокращением для $OUTPUT_AUTOFLUSH, как вы выяснили. ++ увеличивает эту переменную.

$| = 1 будет чистым способом сделать это (IMHO).

Ответ 3

Он увеличивает скорость автозапуска, что, скорее всего, эквивалентно включению.

Ответ 4

Это старая идиома, начиная с дней до IO:: Handle. В современном коде это должно быть написано как

use IO::Handle; STDOUT->autoflush(1);