117471
12.11.2014, aktualisiert am 13.11.2014
2464
3
0
STIRB! :-) Legitimer Ausstieg bei Problemen mit dem Öffnen von Textdateien...
Man findet ja öfter mal so etwas:
Das perl Script wird in einem bash Script aufgerufen. Dort möchte ich den Fehlercode auswerten. Ginge in dem Fall auch so etwas?
Was mich wundert ist die Tatsache, dass man in diversen Foren / Tutorials / Büchern usw. immer "nur" die erste Lösung findet. Aber so eine Vollbremsung ist doch irgendwie kein schöner Stil, oder?
open (DATEI, "< Dateiname") || die "$!\n";
Das perl Script wird in einem bash Script aufgerufen. Dort möchte ich den Fehlercode auswerten. Ginge in dem Fall auch so etwas?
open (DATEI, "< Dateiname") || {
print "Fehler 2 - Datei kann nicht geöffnet werden: $!\n";
exit 2;
}
Was mich wundert ist die Tatsache, dass man in diversen Foren / Tutorials / Büchern usw. immer "nur" die erste Lösung findet. Aber so eine Vollbremsung ist doch irgendwie kein schöner Stil, oder?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 254595
Url: https://administrator.de/contentid/254595
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo FA-jka,
Ob "so etwas" ging konnte ich gerade selber nicht herraus finden durch ausprobieren.
Aber du musst ja nicht "die()" verwenden, schreibe die doch deine eigene Subroutine:
Die Shell dazu sieht dann so aus:
Hey, ich habe doch noch etwas weiter gesucht und bin da fündig geworden: stackoverflow.com
~Arano
Ob "so etwas" ging konnte ich gerade selber nicht herraus finden durch ausprobieren.
Aber du musst ja nicht "die()" verwenden, schreibe die doch deine eigene Subroutine:
#!/usr/bin/perl
print "öffne datei die es nicht gibt:\n";
#open( FH, "< /errorfile" ) || die "$! tot";
open( FH, "< /errorfile" ) || myError( $!, 157 );
print "...never seen...";
exit 0;
sub myError
{
print "Fehler: $_\n";
exit $_[1];
}
arano:~$ ./test.pl
öffne datei die es nicht gibt:
Fehler: Datei oder Verzeichnis nicht gefunden
arano:~$ echo $?
157
arano:~$
Hey, ich habe doch noch etwas weiter gesucht und bin da fündig geworden: stackoverflow.com
open( FH, "< /errorfile" ) || do { print "Fehler: $!\n"; exit 157; };
~Arano
Nein das ist es auch nicht.
Denn damit wird auch die weitere Ausführung beendet.
Aber eigentlich ist es oft noch sinnvoll weiteren Programmcode auszuführen, z.B. um den Fehler in eine Logdatei zu schreiben, um andere geöffnete Ressourcen (Dateien, Datenbanken, Sockets, ect. ) zu schließen, temporär erstellte Dateien zu löschen, Detail9ertere Informationen auszugeben, in GUIs nur eine Melsung ausgeben aber das Programm eben nicht töten....
Da gibts sicher noch viele gute Gründe.
Allerdings in Tutorials oder Beispielen ist die einfachste veranschaulichung, denn eigentlich geht es da ja meist um andere Funktionen die beschrieben werden / auf denen der Schwerpunkt liegt.
~Arano
Denn damit wird auch die weitere Ausführung beendet.
Aber eigentlich ist es oft noch sinnvoll weiteren Programmcode auszuführen, z.B. um den Fehler in eine Logdatei zu schreiben, um andere geöffnete Ressourcen (Dateien, Datenbanken, Sockets, ect. ) zu schließen, temporär erstellte Dateien zu löschen, Detail9ertere Informationen auszugeben, in GUIs nur eine Melsung ausgeben aber das Programm eben nicht töten....
Da gibts sicher noch viele gute Gründe.
Allerdings in Tutorials oder Beispielen ist die einfachste veranschaulichung, denn eigentlich geht es da ja meist um andere Funktionen die beschrieben werden / auf denen der Schwerpunkt liegt.
~Arano