Tom: Query-String

Hi,

in einem Perl-Script würde ich gerne mittels Query-String verschiedene Funktionen aufrufen.

Wenn ich z.B. einen Link in der Form mache,

print "<a href="$script?action=new">Neuer Beitrag</a>\n"

dann kann ich es mit

if ($IN{'action'} eq 'new'){
      print "Neuer Beitrag...\n";
}

nicht aufrufen.
Zum Formularauslesen verwende ich

read(STDIN, $input,$ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($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;
$IN{$name} = $value;
}

Trotzdem funktioniert es nicht. Wenn jemand Rat weiß, wäre ich ihm für eine Antwort sehr verbunden.

viele Grüße

Tom

  1. Hi,

    in einem Perl-Script würde ich gerne mittels Query-String verschiedene Funktionen aufrufen.

    Wenn ich z.B. einen Link in der Form mache,

    print "<a href="$script?action=new">Neuer Beitrag</a>\n"

    dann kann ich es mit

    if ($IN{'action'} eq 'new'){
          print "Neuer Beitrag...\n";
    }

    nicht aufrufen.

    Deine Routine liest nur mittels POST übergebene Daten, ist hier also nicht anwendbar. Mach es am besten gleich richtig:

    use CGI;
    my $cgi = new CGI;
    if ($cgi->param("action") eq "new") { ... }

    Damit kannst Du nichts mehr falsch machen.

    Cheatah