Perl not printing properly
Ok, so I have some sub routines similar to what you see below, my issue is that the print function is not printing out until the actual command is complete, I want it to print
"Has MySQL, Installing:", and then do the command then print OK. I have already tried using sleep and tried clearing the $ssh_d object. Any advice appreciated. Don't worry about the variables in this particular sub, the issue is happening all over. Thanks guys.if ($MySQL)
{
print "Has My开发者_StackOverflow中文版SQL, Installing: ";
$mysqlCmd = "/path/to/script/mysql-install.pl $person > /dev/null 2>&1";
$ssh_d->cmd("$mysqlCmd");
print "OK\n";
}
STDOUT is usually line-buffered, so you won't see your output until you print a newline. You can set $|
before printing to force your output to be printed.
To turn on autoflushing after each print, set $|
to 1:
$| = 1;
print "Enter a number between 3 and 5: ";
chomp( my $answer = <STDIN> );
(Note that $| isn't actually a single value, it is tracked separately for each filehandle. When you set it, it affects the setting for the currently selected filehandle (see select
).
Thanks! Can you show me an example of how to use $| I am unfamiliar, this place never fails lol –
Will this do?
$| = 1;
print "This is now unbuffered printing. "
sleep 3;
print "You no longer have to wait for the NL character. ";
sleep 3;
print "\n";
精彩评论