如何在Perl程序中创建等待省略号?

时间:2014-02-22 02:29:47

标签: perl

以下代码似乎无法正常工作:

print "Processing your listing";
sleep($n);
print ".";
sleep($n);
print ".";
sleep($n);
print ".\n\n";

尝试获取有.的内容,然后是另一个.,然后是另一个.,然后是Process complete!

2 个答案:

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