Хочу понять почему в данном сценарии по разному работаю операторы print с отключенной буфферизацией и syswrite который по дефолту не использует буфферизированый вывод.
| Код | #!/usr/bin/perl use strict; use warnings; use Time::HiRes('sleep');
$|++;
open(FH, "< domains") or die "$!"; open(KNIFE, "| ./knife.pl") or die "$!"; while(<FH>) { sleep(0.1); chomp; #syswrite KNIFE, "http://$_ 127.0.0.1 root GET\n" #print KNIFE "http://$_ 127.0.0.1 root GET\n" } close KNIFE; close FH;
|
- если исп. print то такое впечатление что вывод серано буфферизируемый, т.к. проходит какоето вреия и сразу список вываливается. Хочу сказать что в этом случаи у меня нет разницы если я исп $|++ или обхажусь без него. - syswrite работает нормально, как толька поступают байты он сразу в дискриптор
|