以下代码似乎无法正常工作:
print "Processing your listing";
sleep($n);
print ".";
sleep($n);
print ".";
sleep($n);
print ".\n\n";
尝试获取有.
的内容,然后是另一个.
,然后是另一个.
,然后是Process complete!
答案 0 :(得分:2)
默认情况下,Perl缓冲输出。要使这样的东西起作用,你需要禁用它。
使用
$| = 1
或更好的
STDOUT->autoflush
在你的课程开始时。
答案 1 :(得分:2)
我实际上建议不要手动执行此操作。有很棒的CPAN模块可以提供你真正想要的功能,一个进度条。例如:
以下是ProgressBar :: Stack的示例:
use ProgressBar::Stack;
init_progress;
sleep(1);
update_progress 20;
sleep(2);
update_progress 60;
sleep(2);
update_progress 100;
print "\n";
init_progress(message => "Calculating");
my $sum = 0;
for_progress {
$sum+=$_;
sleep(1);
} 0..10;
print "\nSum = $sum\n";