Moin Moin!
print "Bitte ENTER drücken zum Beenden des Programms ...\n";
<STDIN>
Hilft nicht so wirklich, wenn das Programm in die() reinläuft. In einem END-Block funktioniert das aber. Also:
~~~perl
END {
print "Fertig!\n";
$_=<STDIN>;
}
Etwas eleganter ist es, die Filepositionen von STDOUT und STDERR zu prüfen, und nur auf einen Tastendruck zu warten, wenn wirklich etwas geschrieben wurde:
END {
if ((tell(STDOUT)>0) or (tell(STDERR)>0)) {
print "Fertig!\n";
$_=<STDIN>;
}
}
I/O-Redirection fällt damit natürlich noch auf die Nase. Wenn STDIN kein Terminal ist, sollte man besser nicht am Programmende von STDIN lesen. Ebenso sollte man nicht zusätzliches Zeug nach STDOUT
schreiben, wenn STDOUT umgeleitet ist:
END {
if ((-t STDIN) && (-t STDOUT) && ((tell(STDOUT)>0) or (tell(STDERR)>0))) {
print "Fertig!\n";
$_=<STDIN>;
}
}
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".