Отключение буферизации вывода в perl

При выполнении скриптов вида :

#!/usr/bin/perl

use strict;
use warnings;

for ( my $i = 0; $i < 10; $i++ ) {
print "Iteration - $i\n";
sleep(1);
}

На выходе мы будем иметь ситуацию, когда print всех операций будет выводиться только после полного выполнения цикла, что является нормальным явлением, так как стандартно буферизация включена. Чтобы ее отключить ( чтобы скрипт при каждой итерации выплевывал в консоль данные ) нам нужно изменить значение специальной переменной $| на отличное от нуля.

Пример готового скрипта :

#!/usr/bin/perl

use strict;
use warnings;
$| = 1;

for ( my $i = 0; $i < 10; $i++ ) {
print "Iteration - $i\n";
sleep(1);
}
Tags: , ,

Leave a Reply