Hallo liebes Forum,unter Windows (ActivePerl) habe ich mir ein Programm geschrieben, was ich mithilfe von srvany als Dienst laufen lasse.
Fehler werden größtenteils in ein Logfile geschrieben, weil sie ja auf keiner Konsole oder STDOUT erscheinen können.
Das Programm liest eine Datei ein. Ist diese Datei nicht vorhanden, kann ich diesen Fehler nicht abfangen und loggen, obwohl ich diese Lösung eigentlich als logisch empfunden habe:
1: open(FHIN,"<$file") or &ProcMsg("Fehler beim Oeffnen der Datei $file: $!",0);
2: my @zeilen = <FHIN>;
3: close(FHIN);
Die Unterroutine &ProcMsg soll den Fehler loggen und bei einem Wert <= 1 im zweiten Parameter abbrechen.
1: if ($level <= 1) {
2: die("$error\n");
3: }
Lasse ich das Script laufen und ist die Datei, die gelesen werden soll, nicht vorhanden, bekomme ich jedoch in Zeile 2 den Fehler, daß aus einem nichtgeöffneten Filehandle gelesen werden soll. Ich hätte erwartet, daß in die Unterroutine &ProcMsg() gesprungen und dort abgebrochen wird.
Wenn ich mit "or die()" arbeite, klappt das wunderbar -- warum klappt das mit "or ProcMsg()" nicht?
Tausend Dank schonmal im voraus,
Hans
Datum: 15.11.2005-13:33
