Karlchen: Wert einer Variablen auslesen - Newbie!

Hallo zusammen,

folgendes Frage: Ich möchte in einem Perl-Skript den Wert eines Radiobuttons auslesen, das per Formular zum Server gescickt wurde. Der Radiobutton heißt "newsletter" und seine möglichen Werte sind "ja" oder "nein".

In dem Formmailer-Skript, daß verwende, wird folgende Prozedur aufgerufen, um die Formularfelder zu trennen und ihnen die entsprechenden Werte zuzuweisen:

sub ParseForm
    {
    my ($key, $prefs, $buffer);
    if ($ENV{'REQUEST_METHOD'} eq 'GET')
        { @pairs = split(/&/, $ENV{'QUERY_STRING'}) }
    elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
        {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
        @pairs = split(/&/, $buffer)
        }
    else {Error('Bad or Unbekannte Request-Methode',
                "Das Formular muß mit REQUEST=POST oder REQUEST=GET übertragen werden, Fehler in HTML-Datei prüfen!.")}

foreach $pair (@pairs)
        {
        local($name, $value) = split(/=/, $pair);
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.)*?-->//mg;
        $FORM{$name} = $value;
        if ($name =~ /_/ and $name !~ /^_/)
            {
            ($prefs, $key) = split /_/, $name, 2;
            if ($prefs =~ /r/i and not $value)                { push @missing_values, $key }
            if ($prefs =~ /e/i and $value and
                (($value =~ /(@.*@)|(..)|(@.)|(.@)|(^.)/) or
                  ($value !~ /^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/)))
                                                              { push @bad_emails, $key      }
            if ($prefs =~ /d/i and $value and $value =~ /\D/) { push @only_digits, $key     }
            if ($prefs =~ /w/i and $value and $value =~ /\W/) { push @only_words, $key      }
            if ($prefs =~ /s/i and $value)                    { $value =~ s/^(\s)*//;
                                                                $value =~ s/(\s)*$//;
                                                                $FORM{$name} = $value;       }
            }

}
    }

Meine Frage: Wie heißt die Variable, in der Wert meines Newsletter-Radiobuttons gespeichert ist, so daß ich eine if-Abfrage der Art

if (newsletter == ja) machen kann.

Vielen Dank für Eure Hilfe...

Karlchen

  1. Mosche

    sub ParseForm

    Benutze bitte zum Parsen deiner Parameter das CGI Modul:

    use CGI qw(param);

    if (param('newsletter')) { ... }

    if (newsletter == ja)

    Du benutzt einen numerischen Vergleich für Strings. Das wird zu 0 == 0 ausgewertet und ist immer wahr.

    Tschö Matti

  2. Hi,
    wie schon gesagt wurde, benutze CGI.pm, wieso machst du es dir so kompliziert ?

    #!/usr/bin/perl -w

    use strict;
    use CGI;
    my $query = new CGI;
    my $newsletter = $query->param('newsletter');

    print $query->header;
    if ($newsletter eq 'ja')   {
    print "JA\n";
    }
    else   {
    print "NEIN\n";
    }

    is doch gleich viel kürzer als dein voriges Script.