Yadgar: ODER in Perl in Wirklichkeit ENTWEDER-ODER?

Beitrag lesen

High!

Ich arbeite mich gerade durch ein Perl-Lehrbuch (konkret: Randal L. SCHWARTZ, Tom CHRISTIANSEN: Einführung in Perl, O'Reilly 1998) und stelle in einem Übungslisting fest, das Ergebnis einer ODER-Verknüpfung offensichtlich FALSE ist, wenn beide Teile TRUE sind!

Es geht um die Subroutine wort_richtig, die prüft, ob es für den eingegebenen Benutzernamen in dem am Beginn des Programms definierten Hash ein passendes Passwort gibt, falls nicht, soll "groucho" als Passwort akzeptiert werden. Interessanterweise führt die Eingabe "groucho", wenn es für den Benutzeramen ein reguläres Passwort gibt, zu einer Falsch-Meldung, was bei logisch ODER, wie ich es aus anderen Programmiersprachen kenne, nicht passieren dürfte!

Hier der Code:

sub wort_richtig
{
  my ($einname, $einrateversuch) = @_;
  $einname =~ s/\W.*//;    # alles hinter dem ersten Wort löschen
  $einname =~ tr/A-Z/a-z/; # alles in Kleinbuchstaben umwandeln
  if ($einname eq "yadgar")
  {
    return 1;
  }
  elsif (($worte{$einname} || "groucho") eq $einrateversuch)
  {
    return 1;
  }
  else
  {
    return 0;
  }
}

Bis bald im Khyberspace!

Yadgar