Hallo Volker,
das Verhalten erklaert sich aus dem Benutzen fehlerhafter
Beispiele :)
ich dachte bisher immer (so wie es auch in Selfhtml steht)
das "||" und "or" dasselbe ist. Dem ist nicht der Fall.
Nein. Der Unterschied liegt in der Prioritaet der
Operatoren. Prioritaets-Tabelle:
SYNOPSIS
Perl operators have the following associativity and precedence, listed
from highest precedence to lowest. Operators borrowed from C keep the
same precedence relationship with each other, even where C's precedence
is slightly screwy. (This makes learning Perl easier for C folks.)
With very few exceptions, these all operate on scalar values only, not
array values.
left terms and list operators (leftward)
left ->
nonassoc ++ --
right **
right ! ~ \ and unary + and -
left =~ !~
left * / % x
left + - .
left << >>
nonassoc named unary operators
nonassoc < > <= >= lt gt le ge
nonassoc == != <=> eq ne cmp
left &
left | ^
left &&
left ||
nonassoc .. ...
right ?:
right = += -= *= etc.
left , =>
nonassoc list operators (rightward)
right not
left and
left or xor
print 0 || 1 ? "hallo" : "huhu";
ergebnis: hallo
print $a = 0 || 1 ? "hallo" : "huhu";
Du meinst hier wohl '$a == 0'? Mit '$a = 0' weisst du $a
einen Wert zu, und diese Zuweisung wird fast immer 'true'
ergeben. Der -w Flag haette dir das aber auch gezeigt.
print $a = 0 or 1 ? "hallo" : "huhu";
ergebnis: 0
Dito hier.
interessant sind auch folgendes unterschiedliche
ergebnisse (sollte eigentlich dasselbe sein):
print (0 or 1) ? "hallo" : "huhu";
Hier wird das in Klammern stehende (0 or 1) als Argument fuer
print gewertet. Das danach folgende ist ein Return value in
void context, der -w Flag haette dir das aber auch gezeigt.
hat jemand genauere informationen?
perldoc perlop. Die perldoc ist auch auf
verfuegbar.
Gruesse,
CK
http://cforum.teamone.de/
http://wishlist.tetekum.de/
If God had meant for us to be in the Army, we would have been born with green, baggy skin.