Falke: Übergabe von Inputfeldern

Hallo liebes Forum,

ich habe da ein Problem. Ich übergebe aus einem Html Formular Daten aus Inputfeldern. Solange die Inputfelder gefüllt sind ist das auch kein Problem, sobald ich aber Felder nicht ausfülle funzt mein Script nicht mehr d.h. $Trigger1[0][0] ist auf einmal leer, obwohl es eigentlich gar nicht angesprochen wird :(
Die Daten kommen in @DURCHSUCH an.
Aus dem Input Namen soll die Position ausgelesen werden Zeile.Spalte z.B. 1.0 = Zeile 1 Spalte 0 2.2 = Zeile 2 Spalte 2 usw.

sub aendern
{
foreach (@DURCHSUCH)
{
  #print "$_<br>";     Hier wird auch noch der Name des Inputfeldes  ausgegeben z.B. 1.0=1 .. 6.0=6
  if ($_ ne '')
  {
  $_ =~ m/=(.+)/;
  $ZEILEUNDSPALTEX =  ($);   $INHALTX = ($1);   #print $ZEILEUNDSPALTEX; Hier gibt es den Namen des Inputfeldes der keinen Wert besitzt aufeinmal nicht mehr   $ZEILEUNDSPALTEX =~ m/\.(.+)/;   $ZEILEX =  ($);
  #print $ZEILEX;
  $SPALTEX = ($1);
  $Trigger1[$ZEILEX][$SPALTEX] = $INHALTX
  }
}
}

So wo ist nun mein Problem das keine Inputfelder ohne Eingabe gespeichert werden ? Liegt es an den Suchmustern ?

  1. Moin Moin !

    Laß die Scriptdatei mit der Zeile "#!/usr/bin/perl -w" anfangen.

    Füge "use strict;" in einer der nächsten Zeilen ein.

    Schreib Variablennamen bitte klein, ALLUPPERCASE-Variablen sind für Perl reserviert.

    Beseitige alle Fehler und Warnungen, die Perl ausspuckt.

    Poste den berichtigten Code.

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
    1. Moin Moin !

      Re

      Laß die Scriptdatei mit der Zeile "#!/usr/bin/perl -w" anfangen.

      fängt schon damit an.

      Füge "use strict;" in einer der nächsten Zeilen ein.

      Denn wirf er ziemlich viele Fehler aus geht aber hauptsächlich um Skalare "requires explicit package"

      Schreib Variablennamen bitte klein, ALLUPPERCASE-Variablen sind für Perl reserviert.

      Hab ich gemacht

      Beseitige alle Fehler und Warnungen, die Perl ausspuckt.

      Wie gesagt sind nur "requires explicit package" Fehler

      Wie gesagt das Script läuft ansonsten es geht halt nur darum leere Inputfelder zu übergeben, hierbei tritt ein Fehler auf, den ich nicht finden kann. Kann es sein das ich versehentlich beim Durchsuchen den Skalar lösche weil hinter dem = kein Wert mehr erscheint ?? Weil wenn ich das Feld mit Whitespace speicher hat Perl keine Probleme damit.

      1. Moin Moin !

        Füge "use strict;" in einer der nächsten Zeilen ein.
        Denn wirf er ziemlich viele Fehler aus geht aber hauptsächlich um Skalare "requires explicit package"

        Beseitige das.

        Schreib Variablennamen bitte klein, ALLUPPERCASE-Variablen sind für Perl reserviert.
        Hab ich gemacht
        Beseitige alle Fehler und Warnungen, die Perl ausspuckt.
        Wie gesagt sind nur "requires explicit package" Fehler

        Beseitige die Fehler und Warnungen. Du scheinst im CGI-Context zu arbeiten, da willst Du solche Fehler und Warnungen nicht verursachen.

        Wie gesagt das Script läuft ansonsten es geht halt nur darum leere Inputfelder zu übergeben, hierbei tritt ein Fehler auf, den ich nicht finden kann. Kann es sein das ich versehentlich beim Durchsuchen den Skalar lösche weil hinter dem = kein Wert mehr erscheint ?? Weil wenn ich das Feld mit Whitespace speicher hat Perl keine Probleme damit.

        Warum benutzt Du nicht das CGI-Modul?

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        1. Warum benutzt Du nicht das CGI-Modul?

          In welchem Zusammenhang soll ich denn das CGI Modul benutzen ?? Kannst du mir da vielleicht ein Beispiel nennen weil ich weiss nicht was das Modul mit den leeren Inputfeldern zu tun hat. Wie gesagt auch der Inputfeld name verschwindet einfach. Oder reden wir da gerade aneinander vorbei ?

          Mfg Jasper

          1. Moin Moin !

            Warum benutzt Du nicht das CGI-Modul?
            In welchem Zusammenhang soll ich denn das CGI Modul benutzen ?? Kannst du mir da vielleicht ein Beispiel nennen weil ich weiss nicht was das Modul mit den leeren Inputfeldern zu tun hat. Wie gesagt auch der Inputfeld name verschwindet einfach. Oder reden wir da gerade aneinander vorbei ?

            So wie ich Deinen Code-Fetzen interpretiere, willst Du CGI-Parameter aus GET- oder POST-Requests ($ENV{'QUERY_STRING'} oder <STDIN>) herauslesen und dann weiterverarbeiten.

            Das kann das CGI-Modul wahrscheinlich wesentlich besser als Du, auf jeden Fall ist der Code allgemein als sehr bewährt und recht fehlerfrei anerkannt.

            Und was ich gerade noch sehe: Die Namen Deiner Eingabefelder sehen verdammt nach Zahlen aus, das ist für HTML gar nicht gut. Nimm einen Prefix und vermeide den Punkt. Statt "1.0" also z.B. "x1_0".

            Du willst wahrscheinlich etwas in dieser Art:

            my @a;
            for my $x (0..5) {
              $a[$x]=[];
              for my $y (0..5) {
                $a[$x][$y]=param("x${x}_$y");
              }
            }

            for my $x (0..5) {
              for my $y (0..5) {
                print "Zeile $x, Spalte $y ist: ",(defined($a[$x][$y]) ? "'$a[$x][$y]'" : 'undef'),"\n";
              }
            }

            Alexander

            --
            Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"