我真的不知道该如何措辞,因此,我将举一个例子说明我要做什么。

我有一个脚本,需要在其中使用睡眠功能几秒钟。但是在我进入“睡眠”之前,我需要先说一条消息,例如“ Sleeping ...”。但是,在完成睡眠之后,我需要打印“完成”。因此终端窗口的外观将是这样的:Sleeping... done,这是我的代码:

#!/usr/bin/perl

print "Sleeping... ";
sleep(1);
print "done";


但是发生的是,脚本进入睡眠状态,然后立即全部输出Sleeping... done

是否可以打印“ Sleeping ...”,然后实际进入“ sleep”,最后打印“ done”,但所有内容都在一行上?

最佳答案

您可以通过将$|设置为非零值来对文件句柄启用自动刷新,例如:

local $| = 1;


因此,您的完整脚本是:

#!/usr/bin/perl

use strict;
use warnings;

local $| = 1;

print "Sleeping... ";
sleep(1);
print "done";


您可以通过将$|设置为0将其关闭,如果这只是较大脚本的一小部分,则应执行此操作。由于某种原因,默认情况下将输出缓冲。

07-26 09:01