Jan: Formularauswertung: Multiple Select Menü über Perl auslesen

Hallo wer kann mir helfen?

Wollte ein Multiple Select Menue auslesen, das aussieht wie folgt:

<select name="fsk" multiple  size="1">
              <optgroup label="-bitte auswählen-">
              <option value="fsk[0]">unbeschränkt</option>
              <option value="fsk[1]">ab 6 Jahre</option>
              <option value="fsk[2]">ab 12 Jahre</option>
              <option value="fsk[3]">ab 16 Jahre</option>
              <option value="fsk[4]">ab 18 Jahre</option>
              </optgroup>
            </select>

dann den Inhalt splitten und darauf in eine Datei einlesen(Es darf immer nur ein Wert übergeben werden).

Wie das Ganze für die anderen Text und Formularfelder aussieht,
ist hier zu sehen:

sub new {

my $guest ="" ;
my $buffer ="" ;
my @paare ="" ;
my $paar ="" ;
my $val1 ="" ;
my $val2 ="" ;
my $key ="" ;
#my $fsk;
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@paare = split(/&/, $buffer);

foreach $paar (@paare){

($val1, $val2) = split(/=/, $paar);

$val1 =~ tr/+/ /;
  $val1 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $val2 =~ tr/+/ /;
  $val2 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $val2 =~ s/<([^>]|\n)*>/ /g;

$FM{$val1} = $val2;
}

#########################################################################################

if ((!$FM{'name'} || !$FM{'beschreibung'}) || ($FM{'beschreibung'} && length($max_length)>$max_length && $max_length > 0 )) {

&er_form() ;

} else {

foreach $key (keys %FM) {

$FM{$key} =~ s/&/&amp;/g;
  $FM{$key} =~ s/"/&quot;/g;

$FM{$key} =~ s/\cM\n/<BR>/g;
  $FM{$key} =~ s/\n\cM/<BR>/g;
  $FM{$key} =~ s/\cM/<BR>/g;
  $FM{$key} =~ s/\n/<BR>/g;
  $FM{$key} =~ s/\s+/ /g;

$FM{$key} =~ s/\s+/ /g;
  $FM{$key} =~ s/^\s+//g;
  $FM{$key} =~ s/\s+$//g;
 }

##########################################################################
#Variablen werden in die Datei eingelesen (hier: warez.txt)              #
##########################################################################

$guest = "$datsort|$FM{'name'}|$FM{'beschreibung'}|$FM{'darsteller'}|$FM{'mb'}|$FM{'link1'}|$FM{'link2'}|$FM{'link3'}|$FM{'link4'}|$ndate|" ;

open (DATNEW , ">>$dat_file") ;
 &LockFile(DATNEW);
 print DATNEW "$guest\n" ;
 close (DATNEW) ;

Ps: Werte für das Menü oben sind noch nicht festgelegt worden bis auf die name="fsk".
Wäre sehr Dankbar wenn mir da jemand helfen könnte!

Mfg

Allu

  1. Hi,

    Hallo wer kann mir helfen?

    der Autor von CGI.pm.

    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

    [...]

    Warum so kompliziert? In

    perldoc CGI

    erfährst Du, wie Du extrem simpel Parameter auslesen kannst - weit weniger fehleranfällig wie Dein Code, und auch kompatibel zu multiple selects.

    Cheatah

    1. perldoc CGI
      ???

      wo kann ich das finden?

      1. Hi,

        perldoc CGI
        wo kann ich das finden?

        auf jedem Rechner, der Perl installiert hat. Soll das heißen, dass Du nicht mal _weißt_, dass eine brauchbare Programmiersprache grundsätzlich mit einer Dokumentation ausgeliefert wird? In dem Fall solltest Du in Dein System insbesondere auch folgendes eingeben:

        perldoc perl
        perldoc perldoc
        perldoc perlfaq
        perldoc perlstyle

        Cheatah

        1. P.S.:

          auf jedem Rechner, der Perl installiert hat.

          Und unter http://www.perldoc.org/.

          Cheatah

      2. Hi,
        wenn ich fragen darf, wo hast du Perl gelernt, da du weder das CGI Modul verwendest, noch weist wo man das nachlesen kann ? (soll nicht böse gemeint sein)

        öffne deine Eingabeaufforderung und tippe perldoc cgi ein oder gehe nach
        http://www.perldoc.com

        1. Hi,
          wenn ich fragen darf, wo hast du Perl gelernt, da du weder das CGI Modul verwendest, noch weist wo man das nachlesen kann ? (soll nicht böse gemeint sein)

          öffne deine Eingabeaufforderung und tippe perldoc cgi ein oder gehe nach
          http://www.perldoc.com

          vielleicht hätte ich meinem Posting noch hinzufügen sollen, das es sich nur um einen Ausschnitt handelt ;)

          1. Hi,

            vielleicht hätte ich meinem Posting noch hinzufügen sollen, das es sich nur um einen Ausschnitt handelt ;)

            das war uns schon klar und ändert nichts an den Antworten :-)

            Cheatah

            P.S.: Dein Script sollte übrigens mit

            #!/usr/bin/perl -w
            use strict;

            beginnen. Was das bedeutet, erfährst Du in

            perldoc perlrun
            perldoc strict

        2. use Mosche;

          öffne deine Eingabeaufforderung und tippe perldoc cgi ein

          matti@matti:~> perldoc cgi
          No documentation found for "cgi".

          *SCNR*

          use Tschoe qw(Matti);