Thomas N: Einfacher Formmailer, Danke-Seite als .pl, mit "unbedingtem" if

Beitrag lesen

Hallo Matti,

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.
Ich habe das Script, damit ich mich besser zurechtfinde "umgestellt".
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.

Nach dem die Schleife nicht "normal/trivial" ist erlaube ich mir ein paar Fragen:
1. In Deiner Version gibt es ja eigentlich gar keine Bedingung/log. Operator, nur if ($rc), richtig?
2. In den {Anweisungen} wird der Variablen ($rc) jeweils ein Wert zugewiesen (0/1), aber nur für die jeweilige
   Anweisung, richtig?
3. Könnte das nicht auch mit einem Inkrementationsoperator gehen?, (hab das noch nicht gemacht inkrementieren).
   Aber dann müsste ich die Anzahl der Feld/Value-Werte wissen, oder?
4. warum geht es mit if($rc == 1) auch, dann sind die Variablen-Werte für ($rc) doch nicht nur in den Anweisunegn
   gültig?

--------------------------------
#!/usr/bin/perl -w

use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);

my @Feldnamen = $cgi->param();

print $cgi->header(),
       $cgi->start_html('CGI-Feedback');
       print "<table BORDER=1 cellspacing=0 cellpadding=5>\n";

my $rc = 0;
my ($color, $Feld, $Value);
#my $Value;
#my $Feld;

foreach $Feld (@Feldnamen)
   {
           # Für diese Zeile passende Farbe aussuchen

if ($rc == 1)
                   {
                      $color = '#CFCFCF';       # 0 = hellgrau
                      $rc = 0;
                   }
           else
                   {
                      $color = '#EFEFEF';       # 1 = dunkelgrau
                      $rc = 1;
                   }
        $Value = $cgi->param($Feld);

print <<EOF;
           <tr>
              <th bgcolor="$color">$Feld</th>
              <td bgcolor="$color">$Value</th>
              <th bgcolor="$color">$rc</th>
           </tr>
EOF
   }

print "</table>\n";

--------------------------------
Viele Grüsse
Thomas N *Neu-User*
:-)