2010-03-12 11 views

Respuesta

17

Debe configurar autoflush para STDOUT. Ejemplo:

use IO::Handle; 
STDOUT->autoflush(1); 
foreach (1..20) { 
    print '.'; 
    sleep(1); 
} 
+2

@Hans No vincule con copias no autorizadas de libros. –

+0

Vea http://oreilly.com/catalog/9780596003135 y http://oreilly.com/catalog/9780596003135. –

+0

Lo siento, simplemente apareció cuando Busqué en la web. Ahora eliminé el enlace. –

7

configure $|=1 antes de comenzar a imprimir. P.ej.

perl -e ' $|=1; foreach (1..10) { print "$_ "; sleep(1); }' 
+1

+1, porque alguien marcó una solución de trabajo hacia abajo. –

+0

@ar, 'STDOUT-> autoflush (1)' es lo mismo que '$ | = 1' excepto' $ | = 1', es global y 'STDOUT-> autoflush (1)' es específico de un manejador. –

+0

Excepto que tienes que hacer un 'uso IO :: Handle'. No es que 'IO :: Handle' no haya sido un módulo estándar durante eones, pero ... sí. : (' –

0

Lo que funcionó para mí fue poner la línea

STDOUT->autoflush(1); 

antes de mi línea de

print "."; 

dentro de mi bucle existente. No usé el sueño por miedo a desacelerar aún más las cosas.

Cuestiones relacionadas