Почему ничего не выводится при каждой итерации цикла, когда я использую спящий режим?

Сегодня в моем колледже учитель задал мне вопрос. Он написал этот код на бумаге и сказал «Что будет на выходе этого кода?»

use warnings;

for (1 .. 20)
{
    print ".";
}

Я нашел это несложным и сказал, что он будет повторять цикл 20 раз и на каждой итерации будет печатать точку (.), И, следовательно, на выходе будет 20 точек.

Он сказал, что вы правы, а затем внес некоторые изменения в код. Код был:

use warnings;

for (1 .. 20)
{
    print ".";
    sleep 1;
}

Он сказал, что теперь будет на выходе? Я не знал о функции сна, я предполагал, что на каждой итерации он будет печатать точку (.), А затем будет ждать 1 секунду (из-за функции сна), а затем снова будет повторяться, а затем снова будет напечатайте (.), затем он будет ждать 1 секунду и так далее ...

Учитель сказал мне проверить это дома. Я попробовал это дома и узнал, что второй код ждет 20 секунд, а затем печатает все точки (20 точек) сразу. Я хочу знать, как это произошло? Почему точка (.) Не печатается на каждой итерации?

15
задан ThisSuitIsBlackNot 10 August 2016 в 15:16
поделиться