Wie unterbreche ich kurz mein Programm (und lass es schlafen)?
Inhalt:
In einigen Fällen muss während des Programmablaufs gewartet werden bis es weitergehen kann. Ein möglicher Grund für die Warterei ist, dass erst noch eine Datei erstellt werden muss (von einem anderen Programm) bevor es weitergehen kann.
Hier werden einige Möglichkeiten gezeigt, wie man den Programmablauf kurz stoppen kann.
sleep
Die einfachste Methode, zu warten ist mit sleep! Die Funktion erwartet eine natürliche Zahl, die das Programm warten soll
#!/usr/bin/perl
use strict;
use warnings;
print "Ich warte ...\n";
# warte 10 Sekunden
sleep(10);
print "Fertig! Ich habe 10 Sekunden gewartet";
select
select kann man für die Warterei "missbrauchen". Wenn select mit 4 Argumenten aufgerufen wird, ist der 4. Wert der Timeout. Mit select kann man auch kürzere Pausen als 1 Sekunde einlegen:
#!/usr/bin/perl
use strict;
use warnings;
print "Ich warte ...\n";
# warte 10 Sekunden
select(undef,undef,undef,0.10);
print "Fertig! Ich habe 0,1 Sekunden gewartet";
Time::HiRes
Wie für fast jedes Problem, bietet auch diesmal CPAN wieder ein geeignetes Modul:
Time::HiRes. Dieses Modul bietet auch eine sleep-Methode. Im Gegensatz zu der nativen Methode, kann man damit auch Pausen, die kürzer als 1 Sekunde sind, realisieren:
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw(sleep);
print "Ich warte ...\n";
# warte 10 Sekunden
sleep(0.10);
print "Fertig! Ich habe 0,1 Sekunden gewartet";
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff