Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9174[/thread]

Rückwärts-Counter



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
FlorianL
 2007-07-10 16:03
#78331 #78331
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen :)

ich möchte in meiner perl app gerne nen kleinen counter einbauen der einfach nur rückwärts zählt und es halt anzeigt...

so schauts im moment aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;

my $count = 10;

while ($count--) {
        system("clear");
        print ("$count\n");
        sleep(1);
        if ($count == 1) {
               
 print "Boom\n";
               
 exit 0;
        }
}


nunja... das klappt zwar, aber ich würde sehr gern ohne das clear auskommen um die werte an selber stelle zu ersetzen, hat jemand ne idee wie ich das machen kann? kann so keine dauer-lösung sein, weil natürlich hab ich neben dem count noch anderen output den ich nicht clearen will :)
styx-cc
 2007-07-10 16:36
#78332 #78332
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Was haelst du davon?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
use strict;
use warnings;
$|++;
my $count = 10;

while ($count--) {
print "\r$count";
sleep(1);
if ($count == 1) {
print "Boom\n";
exit 0;
}
}


MfG =)
Pörl.
FlorianL
 2007-07-10 16:43
#78333 #78333
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
schaut gut aus! :)

jetzt muss ich mir nochwas überlegen wie ich den anderen output "abspalte"

denn wenn jetzt das eigendliche prog nen output rausgibt wird mein counter ja auch in die neue zeile springen...

hm.. ne möglichkeit nen screen "aufzuteilen" wirds nich geben oder?
zeit für ein wenig ascii-art ^^

Code: (dl )
1
2
3
4
5
6
7
8
9
-------------------------------------------------------------
|Zeit bis boom: $counter (Feststehend)
-------------------------------------------------------------
|Output1 (ab hier wird "normal" der output abgesetzt)
|Output2
|Output3
|Output4
|usw....
|-------------------------------------------------------------


wenn der screen irgendwann voll ist soll dann der count immernoch oben stehn, der programm-output kann aber "rollen"

hoffe ihr versteht mich ;)\n\n

<!--EDIT|FlorianL|1184071491-->
moritz
 2007-07-10 16:45
#78334 #78334
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Übrigens ist die "empfohlene" (in Perl best practices) Art, Rückwärts zu zählen, diese hier:
Code (perl): (dl )
for my $counter (reverse 0..10){ ... }
FlorianL
 2007-07-10 17:37
#78335 #78335
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
kk, werd ich dann beizeiten nutzen... :)

ne idee zu meiner anderen frage?

ich mach jetz schicht, schönen feierabend noch :)
renee
 2007-07-10 17:43
#78336 #78336
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht kannst Du mit CPAN:Term::Screen etwas erreichen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
FlorianL
 2007-07-11 03:27
#78337 #78337
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
danke renee, ich weiss ehrlich gesagt nicht ob der counter den aufwand wert ist... aber ma schaun, ich schiebs mal nach ganz hinten in die to-do liste :)
topeg
 2007-07-12 07:25
#78338 #78338
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;

my $count=10;
$|=1;

print "Deine Zeit Läuft ab!\n";
printf "Countdown:%02u",$count;

for my $c (reverse(0..$count))
{
  sleep(1);
  printf "\x08\x08%02u",$c; # letze beiden Zeichen löschen und neu schreiben.
}
print "\nBoooooom!!\n";


Funktioniert aber nicht umbedingt überall...
FlorianL
 2007-07-12 09:47
#78339 #78339
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
dank auch dir, aber magst du mir noch sagen wieso du denkst das es nicht überall klappen wird? wegen den escape zeichen zum rückwertslöschen? (die idee hatte ich auch, wussts aber nicht umzusetzen)
topeg
 2007-07-12 20:17
#78340 #78340
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ja, aas Problem sind die Escapezeichen. Die müssen nicht zwingend als Löschbefehl erkannt werden. (bei manchen Systemen hängt es vom installierten Zeichensatz ab)

Sofern "echte" unixshells benutzt werden sollte es funktionieren. (Auf machen exoten und unter Windows hatte ich schonmal Probleme mit sowas.)

Ich schätze mal bei 90% aller Systeme sollte es funktionieren.
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-07-10 16:03.