Perl打印不正确

nol*_*wer 2 printing perl function subroutine

好吧,所以我有一些类似于你在下面看到的子程序,我的问题是打印功能在实际命令完成之前没有打印出来,我希望它打印
"有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";
}
Run Code Online (Sandbox Code Playgroud)

yst*_*sth 13

STDOUT通常是行缓冲的,因此在打印换行符之前不会看到输出.您可以$|在打印前进行设置以强制打印输出.

要在每次打印后打开自动清洗,请设置$|为1:

$| = 1;
print "Enter a number between 3 and 5: ";
chomp( my $answer = <STDIN> );
Run Code Online (Sandbox Code Playgroud)

(请注意,$ |实际上不是单个值,它会针对每个文件句柄单独跟踪.设置它时,它会影响当前所选文件句柄的设置(请参阅参考资料select).


Dav*_* W. 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";
Run Code Online (Sandbox Code Playgroud)