Por que não imprime nada em cada iteração de um loop quando uso suspensã

oje, na minha faculdade, um professor me fez uma pergunta. Ele escreveu esse código no papel e disse: "Qual será a saída desse código?"

use warnings;

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

Achei fácil e disse que ele repetiria 20 vezes e, a cada iteração, imprimiria um ponto (.) E, portanto, um total de 20 pontos será a saíd

Ele disse que você está certo e, em seguida, ele fez algumas alterações no código. O código era:

use warnings;

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

Ele disse o que será a saída agora? Eu não sabia sobre a função dormir, imaginei que, a cada iteração, imprimiria o ponto (.) E esperaria 1 segundo (por causa da função dormir) e, novamente, iteraria e, novamente, print (.), aguarde 1 segundo e assim por diante ...

O professor me disse para verificar em casa. Eu tentei em casa e soube que o segundo código aguarda 20 segundos e depois imprime todos os pontos (20 pontos) de uma só vez. Eu quero saber como isso aconteceu? Por que o ponto (.) Não está sendo impresso em cada iteração?

questionAnswers(3)

yourAnswerToTheQuestion