Я пытаюсь сделать довольно простой процесс с использованием Perl. Фрагмент кода:Открытие трубы и задержки при анализе вывода в Perl
open(FH,"<command> |") or die "Could not run command .. $!\n";
print "After open\n";
while(<FH>)
{
print "I am inside loop\n";
<process..something>
}
Я вижу некоторые необъяснимые задержки когда в то время как() называется. Я вижу, что open занял 9-10 мс для запуска (что находится в пределах диапазона), однако я вижу задержку в 200 - 250 мс между сообщениями «После открытия» и «Я внутри цикла».
Кто-нибудь видел что-нибудь подобное раньше? Любая помощь будет оценена по достоинству.
Благодаря Rajib
Ну, что за «_command_» вы работаете и что он делает? Вы попадаете внутрь 'while' только один раз, когда-то _is_ читаете'', так что это полностью зависит от того, что делает это «_command_». Если он должен был спать в течение 2 секунд, а затем печатать, тогда ваш 'while ()' будет сидеть там в течение 2 секунд. –
zdim
Обратите внимание, что рекомендуется использовать лексические дескрипторы файлов ('my $ fh') и три аргумента' open' и лучше. – zdim
Я запускаю команду базы данных db2pd -db -активный, выход которого происходит довольно быстро (если я пытаюсь выполнить его вне программы). –
rssarkar