PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl - Ausgaben an der selben Stelle



sallo
26-10-2005, 11:40
Hallo,
ich möchte gerne in der DOS-Box eine Fortschrittsanzeige ausgeben.
Hierzu soll eine Prozentzahl immer an der selben Stelle erscheinen. Die Vorherige Zahl soll quasi überschrieben werden.

Kann mir vielleicht jemand einen Tipp geben, wie dies zu bewerkstelligen ist?



for($i=0; $i<=100; $i++) {
print $i."%"; # Diese Ausgabe soll immer überschrieben werden
}


Danke
sallo

ninguno
26-10-2005, 12:59
mit einem carriage return nach jeder prozent ausgabe sollte es gehen:


use FileHandle;
autoflush STDOUT;

for($i=0; $i<=100; $i++) {
print $i."%"; # Diese Ausgabe soll immer überschrieben werden
sleep(1);
print "\r";
}

sticky bit
26-10-2005, 13:11
Die einfachste Methode ist der Wagenrücklauf:


for (my $i = 0; $i <= 100; $i++) {
print("\r$i %");
}

Also mit \r gheste halt zurück an Anfang der Zeile (die wird aber nicht gelöscht. Löschen kannst Du Zeichenweise mit \b.
Wenns auch überl Zeilen gehen muss, dann musst Du mit Terminal-Steuerungssequenzen arbeiten, so (n)curses mässig. Gibts sicherlich Module für.

Edit: OK, ich weiss, ich bin zu langsam für dieses Leben... ;):D

sallo
26-10-2005, 13:20
Danke, funktioniert einwandfrei :)

sallo