好的,所以我有一些类似于你在下面看到的子程序,我的问题是打印功能在实际命令完成之前没有打印出来,我希望它打印出来 “有MySQL,安装:”,然后执行命令然后打印确定。我已经尝试过使用sleep并尝试清除$ ssh_d对象。任何建议表示赞赏不要担心这个特定子中的变量,问题一直都在发生。谢谢你们。
if ($MySQL)
{
print "Has MySQL, Installing: ";
$mysqlCmd = "/path/to/script/mysql-install.pl $person > /dev/null 2>&1";
$ssh_d->cmd("$mysqlCmd");
print "OK\n";
}
答案 0 :(得分:13)
STDOUT通常是行缓冲的,因此在打印换行符之前不会看到输出。您可以在打印前设置$|
以强制打印输出。
要在每次打印后打开自动闪光,请将$|
设置为1:
$| = 1;
print "Enter a number between 3 and 5: ";
chomp( my $answer = <STDIN> );
(请注意,$ |实际上不是单个值,它会针对每个文件句柄单独跟踪。当您设置它时,它会影响当前所选文件句柄的设置(请参阅select
)。
答案 1 :(得分:5)
谢谢!你能告诉我一个如何使用$ |的例子我不熟悉,这个地方永远不会失败大声笑 -
这会吗?
$| = 1;
print "This is now unbuffered printing. "
sleep 3;
print "You no longer have to wait for the NL character. ";
sleep 3;
print "\n";