Schrift
[thread]6804[/thread]

print Ausgabe kommt verzögert auf STDOUT

Leser: 1


<< >> 4 Einträge, 1 Seite
Gast Gast
 2005-03-19 18:15
#52799 #52799
Hallo Forum!

Ich bin neu bei Perl, habe aber schon Erfahrungen in anderen
Programmiersprachen.
Beim Versuch, ein kleines Skript zu schreiben, dass neue Header
in Newsgroups abholt, bin ich auf ein für mich nicht nachvollziehbares
Phänomen gestossen.

Hier kurz der Code:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
use strict ;
use News::NNTPClient ;

my $nc = new News::NNTPClient( 'host', 'port' ) ;
print 'Lade Header...' ;

# das dauert ca. 30 Sek.
my @headers = $nc->xover($nc->group('group')) ;

print "Fertig!\n" ;


Das Problem ist jetzt: nachdem ich das Skript gestartet habe
gibt es für besagte ca. 30 Sek. keine Ausgabe, dann aber kommt
Code: (dl )
Lade Header...Fertig!
auf einen Schlag.
Ich hätte es aber gerne so, dass zuerst die erste Meldung kommt, dann während der Zeit, in der die Header geladen werden, nichts, und am Ende erst die "Fertig!"-Meldung.

Wird in Perl generell die ausgabe gecached oder sowas in der Art?

Vielen Dank,
HaleBob
betterworld
 2005-03-19 18:33
#52800 #52800
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Hallo,
willkommen im Forum und danke, dass Du schon beim ersten Mal die Perl-Tags richtig benutzt.

Die Ausgabe geschieht normalerweise immer erst dann, wenn ein Zeilenumbruch ausgegeben wird (oder das Programm zu Ende ist). Man kann aber auch eine Pufferausgabe erzwingen, indem man schreibt:
Code (perl): (dl )
1
2
3
use IO::Handle;
print 'Lade Header...' ;
STDOUT->flush;


Und dann gibt es noch die Moeglichkeit, das Puffern generell abzuschalten, und das geht sogar viel kuerzer als obiges Beispiel, indem Du ganz am Anfang schreibst:
Code (perl): (dl )
$|++;
\n\n

<!--EDIT|betterworld|1111250182-->
GwenDragon
 2005-03-19 19:03
#52801 #52801
User since
2005-01-17
14554 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,19.03.2005, 17:33]Und dann gibt es noch die Moeglichkeit, das Puffern generell abzuschalten, und das geht sogar viel kuerzer als obiges Beispiel, indem Du ganz am Anfang schreibst:
Code (perl): (dl )
$|++;
[/quote]
Oder
Code (perl): (dl )
$|=1;
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

HaleBob
 2005-03-19 19:11
#52802 #52802
User since
2005-03-19
1 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für die schnellen und kompetenten Antworten!

Für nachfolgende Fragen zum gleichen Thema hab ich ja jetzt
auch das entsprechende Stichwort für Google (auf "gepuffert" bin ich garnicht gekommen :blush: )

HaleBob\n\n

<!--EDIT|HaleBob|1111252328-->
<< >> 4 Einträge, 1 Seite



View all threads created 2005-03-19 18:15.