Marko: Boolesche Werte in Perl

Hallo Leute,

ich hab ne dumme Frage, gibt es boolsche Werte in Perl ? Irgendwie schein true/false ja nicht zu existieren. Und wenn ich eine Abfrage:

if(!variable){..}

stelle, scheint das mehr auf eine Existenzabfrage der Variablen hinauszulaufen.

Gruss

Marko

  1. hi!

    ich hab ne dumme Frage, gibt es boolsche Werte in Perl ? Irgendwie schein true/false ja
    nicht zu existieren. Und wenn ich eine Abfrage:

    if(!variable){..}

    stelle, scheint das mehr auf eine Existenzabfrage der Variablen hinauszulaufen.

    Nein, das ist genau die Methode, um bool-Werte zu überprüfen. Skalare, die 0 (oder als String "") enthalten, sind false, alle anderen true. Um zu überprüfen, ob die Variable existiert, gibt es IMHO einen anderen Befehl, der mir aber momenten nicht einfallen will.

    bye, Frank!

    1. Um zu überprüfen, ob die Variable existiert, gibt es IMHO einen anderen Befehl, der mir aber momenten nicht einfallen will.

      Dabei ist er gar nicht sooo schwierig zu erraten:

      exists EXPR
          Returns TRUE if the specified hash key exists in its hash array, even if the corresponding value is undefined.

      print "Exists\n" if exists $array{$key};
              print "Defined\n" if defined $array{$key};
              print "True\n" if $array{$key};

      A hash element can be TRUE only if it's defined, and defined if it exists, but the reverse doesn't necessarily hold true.

      Note that the EXPR can be arbitrarily complicated as long as the final operation is a hash key lookup:

      if (exists $ref->[$x][$y]{$key}) { ... }

    2. Auch hi!

      Nein, das ist genau die Methode, um bool-Werte zu überprüfen. Skalare, die 0 (oder als String "") enthalten, sind false, alle anderen true.

      Da Strings und Zahlen in Perl dasselbe sind (naemlich Skalare), ist uebrigens auch der Ausdruck "0" false, denn es ist ja dasselbe wie 0. Des weiteren sind undefinierte Variablen false, bzw solche, die einen undefined value erhalten haben.

      Um zu überprüfen, ob die Variable existiert, gibt es IMHO einen anderen Befehl, der mir aber momenten nicht einfallen will.

      Der heisst defined(), gibt aber wie gesagt auch dann false zureck, wenn eine Variable schonmal einen ordentlichen Wert hatte, dann aber ein undef zugewiesen bekam. exists() ist meines Wissens ausschliesslich zur Ueberpruefung der Existenz eines Keys in einem Hash table gedacht.

      Calocybe