perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 36
Click for quality!




10.02.2012 / 09:51

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragAbbruch bei nicht vorhandener Datei abfangen
Seitenanfang
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

Beitragre: Abbruch bei nicht vorhandener Datei abfangen
Seitenanfang
Hallo,

das laesst darauf schliessen, dass die ProcMsg nicht stimmt, bzw. das Programm nicht beendet...

ggf. solltest Du das Konstrukt umbauen auf:

unless ( open FHIN, "<$szFile" ) {

&ProcMsg ( "Fehler blabla $!", 0 );

} # end Fehler

else {

# weitere Verarbeitung

} # end else

Gruß Ralf

Datum: 15.11.2005-14:08

Beitragre: Abbruch bei nicht vorhandener Datei abfangen
Seitenanfang
wie sieht denn ProcMsg genau aus? Sicher, dass es wirklich der zweite Parameter ist ($_[1])?

Ansonsten kann ich Log::Log4perl wärmstens empfehlen (CPAN, aber auch per PPM), denn es gibt Dir komplettes Logging wohin auch immer Du willst. Seit ich es mal ausprobiert habe, möchte ich es nicht mehr missen.

Hier ist ein Tutorial dazu:
http://www.linux-magazin.de/Artikel/ausgabe/2003/01/perl/perl.html (deutsch) oder
http://www.perl.com/pub/a/2002/09/11/log4perl.html (englisch)

svenXY

Datum: 16.11.2005-12:02

-






-
-