[Dresden-pm] Standardwerte

Steffen Schwigon schwigon at webit.de
Fre Jun 6 03:30:09 CDT 2003


Torsten Werner <twerner-perl at vwisb7.vkw.tu-dresden.de> writes:
> ich habe zum heutigen Treffen noch einen Nachtrag. Es ging um die
> Belegung von Variablen mit Standardwerten. Steffen hatte folgendes
> vorgeschlagen:
> 
>    $x = eval { $a or $b };
> 
> Ich denke aber, dass folgendes dazu äquivalent ist, allerdings war ich
> mir vorhin nicht sicher:
> 
>    $x = $a || $b;

Du hast recht. Ich hab' heute früh auch schon gegrübelt, ob das "eval"
überhaupt notwendig war.

Beim Rumexperimentieren habe ich jetzt zum ersten Mal festgestellt,
daß "or" und "and" niedere Prioritäten als "||" und "&&" haben.

Daher muß man, wenn man es wie ich oben mit "or" schreibt, das "or"
zumindest einklammern, also:

  $x = ($a or $b);

Mit Deinem "||" geht es auch ohne.

Aber viel schlimmer ist, es funktioniert generell nicht, wenn Werte,
die FALSCH repräsentieren (also z.B. 0), gültige Werte für $x (oder
$a) sein sollen. Dann brauche ich trotzdem ein mühevolleres Konstrukt,
was z.B. explizit nur auf "defined $a" testet:

  $x = defined $a ? $a : $b;

Naja, nicht mehr ganz so smart, wie ursprünglich gewollt, aber noch
immer kürzer, als die Codefragmente aus meinem Programm gestern. :-)


PS: Vielen Dank nochmal für Deine Mühe mit dem Beamer gestern.

In der besten aller Welten wären mehr Leute dagewesen und es
hätte sich mehr gelohnt. Ich hoffe, es war trotzdem nicht ganz so
traumatisch, so daß ihr wieder vorbeischaut. Denn ich fand es
interessant mit euch.


GreetinX
Steffen
-- 
Steffen Schwigon <schwigon at webit.de>