Page 1 of 1

Textausgabe ohne Newline

Posted: 20. Feb 2003 23:03
by aebi
Hallo zusammen

Ich habe ein kleines, nerviges Problem auf dass ich einfach keine Antwort finden kann.
Ich habe mir ein Perl-Skript geschrieben indem eine Fortschrittsanzeige aus Punkten vorkommt. (Getting Discs ......)
Leider wir mir der Text erst nach dem abschliessenden Newline angezeigt. (Und es ist somit keine Fortschrittsanzeige mehr, da alles auf einmal erscheint)

CODE:
foreach my $disc (@discs) {
    my $detail = $cddb->get_disc_details($genre, $cddb_id);
    print ".";
}
print "\n"

Wie kann ich das am besten umgehen?

Besten Dank!

Philippe

Re: Textausgabe ohne Newline

Posted: 21. Feb 2003 8:27
by Jochen
Hier, hier! Ich, ich! <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Ernsthaft: Viel perl kann ich nicht, aber das hatte ich mal irgendwo gesehen und als Codebeispiel unter in "man perlfunc" wiedergefunden:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">select STDOUT ; $| = 1; # make unbuffered</font><hr></pre></blockquote>Wer mehr perl kann als ich, kann vielleicht auch sagen, ob das select-Statement vorher notwendig ist ind welche Nebeneffekte es hat...

Jochen

Re: Textausgabe ohne Newline

Posted: 23. Feb 2003 3:55
by S. Tdout
## FILEHANDLE wählen,
select STDOUT;
## auf welchen sich die Spezialvariable
$| = 1;
## bezieht. (Ist wohl ohne Eingriffe STDOUT)

## Bei vielen Debug-Meldungen auf STDERR käme aber vielleicht
## auch mal ein Puffern in Frage:
select STDERR; $| = 0;

Re: Textausgabe ohne Newline

Posted: 23. Feb 2003 5:15
by S. Tdout
## Korrekter ist wohl, `$|' bezieht sich immer auf das Standard-File-Handle (STDIO)
## und mittels `select FILEHANDLE' wird eben jenes zum Standard. Also nach einem

select IrgendEinHandle; $| = 1;

## wieder

select STDOUT;

## Sonst landet ein `print( "Ein String" )' nicht auf STDOUT,
## sondern in IrgendEinHandle.
## Perl-Gewurschtel ##

Re: Textausgabe ohne Newline

Posted: 23. Feb 2003 5:16
by S. Tdout
STDOUT statt STDIO