¿Por qué no imprime nada en la salida en cada iteración de un bucle cuando uso sleep?

Hoy en mi universidad un profesor me hizo una pregunta. Escribió este código en el papel y dijo: "¿Cuál será el resultado de este código?"

use warnings;

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

Me resultó fácil y dije que se repetirá 20 veces y en cada iteración imprimirá un punto (.) Y, por lo tanto, se generarán un total de 20 puntos.

Dijo que tienes razón y luego hizo algunos cambios en el código. El código fue:

use warnings;

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

Dijo que ¿cuál será la salida ahora? No sabía acerca de la función de suspensión, supuse que en cada iteración imprimirá el punto (.) Y luego esperará 1 segundo (debido a la función de suspensión) y luego nuevamente iterará y luego nuevamente print (.) luego esperará 1 segundo y así sucesivamente ...

La maestra me dijo que lo revisara en casa. Lo probé en casa y llegué a saber que el segundo código espera 20 segundos y luego imprime todos los puntos (20 puntos) a la vez. ¿Quiero saber cómo sucedió esto? ¿Por qué no se imprime el punto (.) En cada iteración?

Respuestas a la pregunta(3)

Su respuesta a la pregunta