【发布时间】:2011-07-02 17:52:10
【问题描述】:
今天在我的大学里,一位老师问了我一个问题。他在纸上写了这段代码并说 “这段代码的输出是什么?”
use warnings;
for (1 .. 20)
{
print ".";
}
我发现这很简单,我说它会循环 20 次,每次迭代都会打印一个点 (.),因此总共会输出 20 个点。
他说你是对的,然后他对代码进行了一些更改。代码是:
use warnings;
for (1 .. 20)
{
print ".";
sleep 1;
}
他说现在的输出是什么?我不知道 sleep 函数,我猜在每次迭代时它都会打印点 (.) 然后它会等待 1 秒(因为 sleep 函数)然后它会再次迭代然后它会再次print (.) 然后它会等待 1 秒,依此类推...
老师让我在家检查。我在家里试过了,我知道第二个代码会等待 20 秒,然后它会一次打印所有点(20 个点)。我想知道这是怎么发生的?为什么每次迭代都没有打印点 (.)?
【问题讨论】: