Perl forloop在打印完成之前继续



我有一个for循环,它从用户那里获取一个值,并对它进行比较,然后根据输入输出结果。然而,下一次迭代在前一次迭代中的if语句打印出输入的解释结果之前开始它的print语句:

for $count (0 .. $group_count) {
    my $group_name = groups[$count];
    my $answer = prompt "nWould you like to add $user to group $group_name? [y/n]";
    if($answer eq 'y') {
        print "successful";
    }
}

因此,一旦我在提示符之后点击enter,下一个"Would you like to add ..."出现,然后"successful"打印,是否有一种方法可以阻止迭代,直到打印完成?

既然你没有回复,我将不得不猜测你的问题是什么。我猜你看到的是:

Would you like to add foo to group A? [y/n]
$ y
# nothing happens
successful
Would you like to add bar to group B? [y/n]

这是因为print在打印时使用缓冲。当您打印不包含换行符n的内容时,它只是被添加到缓冲区中,但不会立即打印出来。所以,如果你想看到它被打印出来,只需添加一个换行符:

print "Successfuln";

从技术上讲,您也可以通过$|篡改标准输出缓冲区,但我认为在这种情况下,这是多余的。

最新更新