Thread Frage zu "-e !" Schalter bei if - Abfrage
(5 answers)
Opened by YAPD at 2019-05-28 21:07
In meinen Augen gibt es keinen Grund dafür. In aller Regel ist das falsch im Sinne der Programmlogik.
Das ist ein komplizierter Weg um sinngemäß "if ( false ) {}" zu sagen. Bei -e ! "string" wird die Negation auf "string" angewendet und das Ergebnis davon mit -e dann auf Existenz überprüft, was wohl im Ergebnis ein "existiert nicht" ergibt und vom if () als FALSCH gewertet wird. Damit wird dann der Block nicht ausgeführt. Das passiert, egal ob die Datei existiert oder nicht. Davon ab: Wenn in Deinem gezeigten Code-Fragment die Datei dann eben wirklich nicht existiert, schlägt als nächstes der open() Befehl fehl (was für das if ein FALSCH bedeutet ) und der folgende else-Zweig wird ausgeführt und eine - in diesem Fall - falsche Aussage wird ausgegeben. Die Aussage "Keine Berechtigung" ist halt nur korrekt, wenn genau das der Fall ist und die Berechtigung nicht stimmt. Sinniger ist es (auch wenn es dann potentiell auf Englisch kommt), die Variable $! auszugeben, um den wahren Grund zu erfahren. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 #! /usr/bin/perl use strict; use warnings; my $file = "/tmp/i_am_not_there.txt"; if ( open my $fh, '<', $file ) { print "oops\n"; } else { die "Oeffnen von $file fehlgeschlagen: $!\n"; } Ergibt dann: Code: (dl
)
1 $ perl /tmp/test.pl meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |