Thread perl variablen leer ?: to initiier or not to initiier ? (19 answers)
Opened by rio at 2004-06-02 22:39

Dubu
 2004-06-03 12:56
#82951 #82951
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=sri,03.06.2004, 02:09]Das Beispiel ist völlig egal.

Nicht initialisierte Scalare (SvNULL) sind in jedem Kontext equivalent zu "undef", erst mit einer Wertezuweisung gelten dann die jeweilig  spezifischen Kontext Regeln des Wertes. (String, Number, Reference)[/quote]
Wenn du einen undefinierten Wert neben einen Vergleichsoperator setzt, erzwingst du einen Kontext. Daher kommt es, dass undef == 0 und undef eq "" beide wahr ergeben. Ein Vergleich ist somit eine schlechte Methode um herauszufinden, ob ein Wert undef ist. Die Pruefung mit defined(...) ist der richtige Weg.

Ich haette auch sowas schreiben koennen:
Code: (dl )
perl -e '$test = 0; print "VARIABLEN SIND IMMER UNDEF!\n" if my $test eq undef'

$test ist einwandfrei nicht undef, aber der Vergleich ist wahr.

View full thread perl variablen leer ?: to initiier or not to initiier ?