Michael Schröpl: Einfacher Formmailer, Danke-Seite als .pl, mit "unbedingtem" if

Beitrag lesen

Hi,

Im logischen Kontext wird $rc folgend ausgewertet:
Welcher "logische Kontext"?

Das, was hinter dem "if" steht, das ist eine Bedingung (nicht das
"if" selbst, welches diese Bedingung auswertet und nach verzweigt).
Eine Bedingung ist ein Ausdruck, der als Ergebnis "wahr" oder "falsch"
liefern kann.
Das, was die Klammern um das "$rc" herum legen, ist dessen Kontext -
nämlich die Auswertungsvorschrift, die auf das $rc angewendet wird.
Wenn Du $rc an eine andere Variable zuweisen würdest, dann wäre die
Vorschrift, diesen Wert unverändert zu übernehmen; im Kontext einer
Bedingung lautet die Vorschrift, den Wert auf "wahr" oder "falsch"
abzubilden.
Das ist in Perl etwas komplizierter zu verstehen als in Programmier-
sprachen, die definierte skalare Datentypen besitzen, wo also eine
Variable nur _entweder_ eine Zahl _oder_ eine Zeichenkette _oder_
was auch immer enthalten darf. In Perl (und auch in JavaScript)
darf eine skalare Variable irgendwas enthalten - und das führt dann
dazu, daß sich dessen Bedeutung in bestimmten Kontexten ändern kann:
Wenn Du einen String als Bedingung auswertest, wird eben ein Wahr-
heitswert daraus, und umgekehrt kann aus einer Zahl ein String werden,
wenn beispielsweise eine String-Zusammenhängung darauf angewendet
wird. Man weiß also nie nur alleine aus der Ansicht der Variable,
als was deren Inhalt im nächsten Moment interpretiert wird ... nein,
das ist nicht die Sprache, die ich einem Einsteiger zum Lernen emp-
fehlen würde, aber für den Fortgeschrittenen erlaubt diese relative
Freiheit, bestimmte Dinge sehr flexibel zu handhaben und sehr kurz
und prägnant in Anweisungen zu schreiben.

Wenn die Variable $rc durch if ausgewertet wird (und das wird sie,
auch wenn nur if ($rc) dasteht, also kein "sichtbarer" Operator),

Auch die runde Klammer drum herum ist in diesem Moment so eine Art
Operator.

$rc = 1 - 0;   # 1-0 soll 1 sein? Nach welcher Logik gehst Du hier vor?

Welchen Wert würdest Du denn vorschlagen?

Der Thread wandert bald ins Archiv, oder?

Archiviert wird als nächstes immer derjenige Thread, in dem am längsten
nicht mehr gepostet wurde. Nur keine Hektik ...

Viele Grüße
      Michael