Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl无法正确打印_Perl_Function_Printing_Subroutine - Fatal编程技术网

Perl无法正确打印

Perl无法正确打印,perl,function,printing,subroutine,Perl,Function,Printing,Subroutine,好的,我有一些类似于下面所看到的子例程,我的问题是打印函数在实际命令完成之前不会打印出来,我希望它打印 有MySQL,正在安装:,然后执行命令,然后打印OK。我已经尝试使用sleep并尝试清除$ssh\d对象。谢谢你的建议。不要担心这个特殊子系统中的变量,这个问题到处都在发生。谢谢各位 if ($MySQL) { print "Has MySQL, Installing: "; $mysqlCmd = "/path/to/script/mysql-install.pl $pers

好的,我有一些类似于下面所看到的子例程,我的问题是打印函数在实际命令完成之前不会打印出来,我希望它打印
有MySQL,正在安装:,然后执行命令,然后打印OK。我已经尝试使用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";
}

标准输出通常是行缓冲的,所以在打印换行符之前,您不会看到输出。可以在打印前设置以强制打印输出

要在每次打印后启用自动刷新,请将
$|
设置为1:

$| = 1;
print "Enter a number between 3 and 5: ";
chomp( my $answer = <STDIN> );
$|=1;
打印“输入一个介于3和5之间的数字:”;
chomp(我的$answer=);
(请注意,$|实际上不是单个值,每个文件句柄都会单独跟踪它。设置它时,它会影响当前选定文件句柄的设置(请参阅)


谢谢!你能给我举个如何使用$的例子吗?我不熟悉,这个地方从不失败lol–

这样行吗

$| = 1;
print "This is now unbuffered printing. "
sleep 3;
print "You no longer have to wait for the NL character. ";
sleep 3;
print "\n";

当您在不使用ssh cmd调用的情况下运行它时(我假设sshd指的是Net::ssh::Perl),它会打印出来吗?我猜cmd调用会对stdout句柄产生某种影响。请参阅“遭受缓冲”谢谢!你能给我举一个如何使用美元的例子吗?我不熟悉,这个地方从来没有失败过lol@noledgeispower:添加了一个example@ysth:考虑到
STDOUT
(在线缓冲模式),此处是否需要自动刷新从
STDIN
读取时自动刷新?@sid_com:dependens。如果stdout要转到文件,则可以使输出更加正常。