Perl打印不正确

时间:2011-05-24 01:19:08

标签: perl function printing 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";
}

2 个答案:

答案 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";