Leser: 2
![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use strict; use warnings; my $line; $|++; { print " 0s: "; my $secs = 0; local $SIG{ALRM} = sub { printf("\e7\r%5ds:\e8", ++$secs); alarm(1); }; alarm(1); $line = <STDIN>; alarm(0); } chomp $line; print "Danke, dass Sie $line eingegeben haben.\n";
pl+2008-02-03 13:49:36--Ich habs jetzt endlich:
In meinem Code fehlt das next!
Struppi+2008-02-03 22:10:55--Wieso? Er tritt sozusagen so lange auf der Stelle, bis das if einmal erfuellt ist, dann rutscht er in der Liste eins weiter. Und da die Schleife oefters als 1x pro Sekunde ausgefuehrt wird ist das ganz sinnvoll..pl+2008-02-03 13:49:36--Ich habs jetzt endlich:
In meinem Code fehlt das next!
Das redo ist Murks und das next auch, da in der Schleife nichts weiter passiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl -w use strict; use constant CR => "\r"; use constant NL => "\n"; my @x = qw(2 6 8 12); print "start"; $|++; foreach(@x) { print NL, "warte ....", CR; warte($_); print "$_ sekunden vorbei."; } sub warte{ my $wait = shift; my $t1 = time(); while(1) { my $t2 = time(); my $diff = $t2 - $t1; last if($diff == $wait); } }
1 2 3 4 5 6 7 8 9 10 11
sub sleep_at_least($) { my $rest = shift; $rest -= sleep $rest while ($rest > 0); } $SIG{ALRM} = sub { print "Alarm!\n"; }; alarm 3; sleep_at_least 10; # wartet trotz des zwischenzeitlich auftretenden Alarmsignals mindestens 10 sec
1 2 3 4 5 6 7 8 9 10 11
use Time::HiRes qw( usleep gettimeofday ); while ( 1 ) { usleep 1_000_000 - (gettimeofday)[1]; &do_stuff(); } sub do_stuff { print Time::HiRes::time . "\n"; 1; }
![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |