Matti Maekitalo: Einfacher Formmailer, Danke-Seite als .pl, mit "unbedingtem" if

Beitrag lesen

use Mosche;

ich hab versucht die if-Schleife nachzuvollziehen, habe dafür mit einer Bedingung ($rc == 1) experimentiert und
die Variable ($rc) auch mal NICHT "initialisiert", es kommt aber "immer" ($rc=1 = hellgrau) in der HTML-Ausgabe
zuerst dran, also die else-Anweisung, wenn ich das richtig verstanden habe.

Am Anfang ist $rc == 0, deswegen kommt bei der Überprüfung
if ($rc) # s.u. dazu
falsch raus, deswegen else. Da das zutrifft, wird $rc = 1 gesetzt und die Farbe ausgewählt.

Beim nächsten Mal ist $rc == 1, der erste Teil der _Abfrage_ (keine Schleife) wird ausgeführt, $rc = 0 gesetzt ...

Dann kam die Idee noch die Variable ($rc) mitauszugeben, so dass in jeder Zeile noch eine 1 oder eine 0 steht,
jeweils eben passend zur Farbe. Beim ausprobieren hatte ich auch mal den Eindruck die Reihenfolge der TabelleFarben
ändern zu können, aber bin mir nicht sicher, da ich es nicht "reproduzieren" konnte.

Du kannst den Startwert auf 1 setzen, dann ist die Ausgabe andersherum.

  1. In Deiner Version gibt es ja eigentlich gar keine Bedingung/log. Operator, nur if ($rc), richtig?

Ja. Im logischen Kontext wird $rc folgend ausgewertet:
 - Wenn $rc zu 1 ausgewertet wird (zB durch 1, 2, 'blah',
   aber Vorsicht: auch '000', ist die Bedingung wahr
 - Wenn $rc z 0 ausgewertet wird (zB durch undef, 0, '')
   ist die Bedingung falsch.

  1. In den {Anweisungen} wird der Variablen ($rc) jeweils ein Wert zugewiesen (0/1), aber nur für die jeweilige
       Anweisung, richtig?

Nee, für $rc insgesamt. Es soll ja auch im nächsten Schleifendurchlauf sichtbar sein, welchen Wert $rc hat.

  1. Könnte das nicht auch mit einem Inkrementationsoperator gehen?, (hab das noch nicht gemacht inkrementieren).

Ja, denn es geht ja nur darum, $rc einen Wahr/Falsch Kontext zu verpassen. Normalerweise hätte ich das auch gemacht, hatte mich aber dagegen entschieden, um dich nicht noch mehr zu verwirren.

Statt $rc = 0 geht auch $rc-- und statt $rc = 1 geht auch $rc++.

Zum Lösungsansatz von Michael:
du kannst auch immer $rc++ schreiben und in der if-Abfrage
if($rc % 2)  # ist $rc durch 2 teilbar
das war mit modulo-Operator gemeint.

Aber dann müsste ich die Anzahl der Feld/Value-Werte wissen, oder?

  1. warum geht es mit if($rc == 1) auch, dann sind die Variablen-Werte für ($rc) doch nicht nur in den Anweisunegn
       gültig?

$rc == 1 ist eine boolesche Abfrage, keine Zuweisung (wie $rc = 1), oder habe ich deine Frage falsch verstanden?

use Tschoe qw(Matti);