Thread eval und Rückgabe? (14 answers)
Opened by Math55 at 2004-05-06 00:02

pq
 2004-05-06 14:41
#82047 #82047
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
format_c,,
Code: (dl )
system("befehl") or warn "Konnte Befehl nicht ausführen: $!\n";

[quote=format_c,05.05.2004, 22:17]Anders:
Code: (dl )
1
2
system("befehl");
warn "Fehlgeschlagen: $!\n" if $!;
[/quote]
weder das eine noch das andere!
wenn ich mich beim ersten posting irre und ein zweites zur korrektur
schreibe, teste ich das einfach mal kurz durch.
der richtige code heisst:
Code: (dl )
system("command") and die $!;

warum, steht natürlich in perldoc -f system. es liefert 0 bei erfolg und
!= 0 bei fehler. ganz einfach deswegen, weil das unix-prozesse nun mal
so tun, damit sie bei einem fehler auch noch praktischerweise den fehlercode mitliefern können.
dein zweites beispiel wird immer "Fehlgeschlagen" ausgeben, falls $! mal
irgendwann im programm gesetzt wurde. probier's aus:
Code: (dl )
1
2
3
4
perl -wle'open NONSENSE, "nonsense";
print "open schlug fehl: $!" if $!;
system("ls");
print "system schlug fehl: $!" if $!'
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread eval und Rückgabe?