我正在尝试使用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>
}
当调用while()时,我看到一些莫名其妙的延迟。我看到开放需要9-10ms才能运行(这在范围内),但是我确实在“打开后”和“我在内部循环”消息之间看到200-250毫秒的延迟。
以前有没有人见过类似的东西?任何帮助,将不胜感激。
感谢 Rajib
那么,你正在运行什么“_command_”,它有什么作用?只有当''while''被''读取时,才完全取决于“_command_”在做什么。如果它睡了2秒钟然后打印,那么你的'while()'将在那里坐2秒。 –
zdim
请注意,推荐使用词法文件句柄('my $ fh')和三参数'open',并且更好。 – zdim
我正在运行一个数据库命令db2pd -db -active其输出几乎是瞬间发生的(如果我在程序外尝试)。 –
rssarkar