Thread Windows "Eingabeaufforderung" und Perl
(3 answers)
Opened by AndiS at 2008-03-25 00:49
Das ganze hat nichts mit der Windows Shell zu tun. Sondern mit Standardmäßigen Pufferung.
Wie Ronnie sagte kannst du dir $| anschauen. Wenn du diese Variable auf einen wahren Wert setzt dann schaltest du den "autoflush" Modus auf den derzeit aktiven Filehandle ein. Standardmäßig ist STDOUT der aktive Filehandle. Der Autoflush Modus bewirkt das der Buffer immer schnellstmöglicht geleert wird. Standardmäßig wird dieser bei einer Ausgabe nur dann geleert wenn ein Newline zeichen im Buffer ist. Daher bekommst du die Ausgabe also erst nach dem sleep() angezeigt. Anstatt allerdiengs $| zu setzen würde ich dir lieber empfehlen das Modul "IO::Handle" zu laden und dort die Methode autoflush zu nutzen. Der Vorteil ist das es lesbarer ist. Und du für jeden beliebigen Handle den Autoflusch Modus setzen kannst. Mit der variable $| den autoflush Modus für einen anderen Handle zu setzen sieht etwas wirsch aus... Hmm, nachteile hat es eigentlich keine. Code: (dl
)
1 #!/usr/bin/perl Und weitere Vorteile sind noch folgende Sachen. Wenn du nur zu einem bestimmten Zeitpunkt etwas flushen möchtest kannst du auch flush() aufrufen. Das heißt der Buffer wird geleert. Aber erst zu dem Zeitpunkt wo du es aufrufst. Weiterhin gibt es noch eine printflush() Methode wo nur die Argumente direkt geflusht werden. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|