Problem mit Perl-Skript

Von: , Frage gestellt am Mo, 11. Okt 1999

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

4 Antworten zu dieser Frage

  1. Antwort von nach 45 Minuten hilfreich
    Re: Problem mit Perl-Skript

    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

  2. Antwort von nach 3 Stunden hilfreich
    Re: Problem mit Perl-Skript

    Mein Vorredner war schon auf der richtigen Spur (und Perl Kenntnisse brauchts dafuer auch nicht wirklich ;-) if ( $in{projekt} eq "01" ) { print
    "..."; }
    1. Anweisung: falls richtig: print ausfuehren... if ( $in{projekt} eq "b01" ) { print
    "..."; }
    2. Anweisung ... if ( $in{projekt} eq "a02" ) { print
    "..."; }
    3. Anweisung .... if ( $in{projekt} eq "b02" ) { print
    "..."; }
    else { print "..."; }
    4. 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

    • Antwort von nach 17 Stunden hilfreich
      Re^2: Problem mit Perl-Skript

      Danke!!!!

  3. Antwort von nach einem Tag hilfreich
    Re: Problem mit Perl-Skript

    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]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!