Anonym
11. Oktober 1999 um 16:37
1
Kann mir jemand sagen, was an folgenden Zeilen eines Perl-Skriptes falsch ist:
if ( $in{projekt} eq „01“ ) { print „…“; }
if ( $in{projekt} eq „b01“ ) { print „…“; }
if ( $in{projekt} eq „a02“ ) { print „…“; }
if ( $in{projekt} eq „b02“ ) { print „…“; }
else { print „…“; }
Das Problem ist, dass er immer sowohl eine (die richtige) Ausgabe von einer if-Zeile schreibt, aber zusaetzlich auch die Ausgabe der else-Zeile. Nur das vierte Projekt (b02) funktioniert richtig.
Gruss - ein verzweifelter Roland
meine PERL Kenntnisse sind zwar rudimentaer, aber das ist logisch…
die IFs sind nicht geschachtelt, d. h. alle 4 IFs werden einzeln ausgefuehrt.
D. h. wenn A02 , sagt er im 2. If zwar ok, das 4. IF durchlaeuft er aber auch, also A02 b02 -> Fehler.
Also alle 4 IFs mit ELSE verketten !
Ob es eine mehrfach-IF Anweisung (wie CASE) oder sowas gibt weiss ich nicht, aber mit ELSEs wirds werden !
Gruss
Dirk
Anonym
11. Oktober 1999 um 20:00
3
Mein Vorredner war schon auf der richtigen Spur (und Perl Kenntnisse brauchts dafuer auch nicht wirklich
if ( $in{projekt} eq „01“ ) { print
„…“; }
Anweisung: falls richtig: print ausfuehren…
if ( $in{projekt} eq „b01“ ) { print
„…“; }
Anweisung …
if ( $in{projekt} eq „a02“ ) { print
„…“; }
Anweisung …
if ( $in{projekt} eq „b02“ ) { print
„…“; }
else { print „…“; }
Anweisung: falls richtig print ausfuehren, sonst else (und wenn vorher schon einer richtig war, ist hier der else-Block gefragt)
Richtig:
if($a) {
…
} elsif ($b) {
…
} else {
…
}
gruss
kampi
ganz klar, das sind 4 unabhängige Abfragen, das else gehört zur letzten
mach einfach elsif() beim zweiten bis letzten
also Syntax
if () { … }
elsif () { … }
elsif () { … }
elsif () { … }
elsif () { … }
else { … }
Bruno
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]