PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : print stellt erst nach newline dar?



brain-death
27-07-2005, 21:41
hi,

ich will eine art fortschrittsanzeige basteln.
das heißt ich muss mit wagenrücklauf (\r) immer wieder zurück und erneuern.
das dumme ist nur, dass print mit der ausgabe immer wartet bis ein newline (\n) ausge_print_et wird.

was kann ich da machen??



print "Hallo"; # wird erst nach sleep angezeigt?!
sleep 5;


danke bd

michael.sprick
27-07-2005, 23:55
Das hat etwas mit dem Ausgabepuffer zu tun. Ein Newline sorgt dafür, das der Inhalt des Puffers ausgegeben wird. Ansonsten wird der Inhalt erst dann ausgegeben, wenn dieser Puffer voll ist.
Abhilfe schafft die Variable $|. Wenn sie NICHT 0 ist, dann werden alle Ausgaben direkt geschrieben...

also z.B:



$|++;
my $var = 0;
while($var < 100)
{
printf("Zaehlerstand: %3d\r",$var);
sleep(1);
$var++;
}


siehe auch: perldoc perlvar