Отключение буферизации вывода в 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: perl, буферизация, специальные переменные