Thread Variable in Sub-Routine unbekannt (20 answers)
Opened by tecker at 2008-05-07 16:19

Dubu
 2008-05-09 20:13
#109497 #109497
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
tecker+2008-05-09 10:53:19--
Die Überprüfung wollte ich mit
Code: (dl )
if (not defined $s_a || $s_a eq ''){$s_a = 0;}
machen, klappt aber nicht immer, da er glaube kein eq Vergleich machen kann FALLS der Wert undef ist, oder??


Das "not" hat eine niedrigere Priorität als das "||". Dein Ausdruck ist äquivalent zu
Code: (dl )
if (not (defined $s_a || $s_a eq ''))


Also Klammern setzen oder das höher priorisierte "!" zur Negation nehmen
Code: (dl )
if (! defined $s_a || $s_a eq '')

oder auch noch "or" statt "||" nehmen. ;)
Code: (dl )
if (not defined $s_a or $s_a eq '')


Ich weiß gerade nicht, was das PBP empfiehlt, aber generell werden die niedrig priorisierten logischen Operatoren eher selten eingesetzt, z.B. bei so etwas:
Code: (dl )
foobar(...) or die "..."

View full thread Variable in Sub-Routine unbekannt