Robert Allerstorfer: "$variable eq 0" bei $^W = 1

Hi,

wenn ein Perl programm bei eingeschaltetem warnings flag ($^W = 1) abfrägt, ob der wert einer variable gleich 0 ist (if $variable eq 0), die variable aber undefiniert ist, gibt es eine warning message ("Use of uninitialized value in string eq ..."). Natürlich will aber ein (womöglich vom wahnsinn getriebener) Perl programmierer seinen code 100 % use strict und -w kompatibel haben, also gilt es, eine lösung zu finden, die niemals zu warnings führt.

Daher frage ich immer vorher ab, ob der wert einer variable wahr ergibt, bevor weitere abfragen über den wert erfolgen, also

if ($variable && $variable eq 1) { print "$variable:\t$variable" }

Solche abfragen funktionierten aber nur, wenn der abgefragte wert ungleich null ist, also

if ($variable && $variable eq 0)

kann man vergessen. Gibt es nicht irgendwie die möglichkeit, abzufragen, ob eine variable definiert ist, anstatt abzufragen, ob sie wahr ergibt?

Danke für tipps!

rob.

  1. Hallö,
    if ($variable eq 0) ist (soweit ich weiß) ohnehin falsch da es sich nicht um einen String sondern um eine Zahl handelt. Zahlen vergleicht man mit if($variable == 0) oder als String if($variable eq "0").
    Sollte ich falsch liegen, dann berichtigt mich.

    viele Grüße
    Thomas

  2. Hallo rob,

    [...]

    Gibt es nicht irgendwie die möglichkeit, abzufragen, ob eine variable definiert ist, anstatt abzufragen, ob sie wahr ergibt?

    Du hast es schon fast erkannt. Ich denke in Selfhtml80 ist es auch schon zu finden: defined() (http://selfhtml.teamone.de/cgiperl/funktionen/kontrolle.htm#defined) liefert Dir die gesuchte Information über den Zustand einer Variablen.

    Gruß Alex

    1. Hi,

      sorry für mein posting, habe es auch soeben in Larry's bibel (Programmieren mit Perl) gefunden...

      rob.

      Hallo rob,

      [...]

      Gibt es nicht irgendwie die möglichkeit, abzufragen, ob eine variable definiert ist, anstatt abzufragen, ob sie wahr ergibt?

      Du hast es schon fast erkannt. Ich denke in Selfhtml80 ist es auch schon zu finden: defined() (http://selfhtml.teamone.de/cgiperl/funktionen/kontrolle.htm#defined) liefert Dir die gesuchte Information über den Zustand einer Variablen.

      Gruß Alex