Perl-Kontaktformular

Hallo an Alle,
ich habe ein großes Problem:
Ich möchte auf meiner Website ein Kontaktformular erstellen auf dem dann bei Ausfüllen mit einem Danke reagiert wird.
Hierzu habe ich einen HTML-Code geschrieben und ein PERL-Script.
Im folgenden der HTML-Code:

Hallo-Formular

Name:

Nachname:

Und nun das Perl-Script:
#!/usr/Perl/bin/perl -w

Das Script name.pl

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

Formularinhalt holen

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

@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(„C“, hex($1))/eg;

$FORM{$name} = $value;

print „Content-type: text/html\n\n“;
print qq|

Ausgabe
Hallo, $FORM{‚fullname‘}

Hallo, $FORM{‚lastname‘}

|;
exit;

}

Wenn ich nun die Formularfelder ausfülle, bringt mir PERL immer nur folgendes zurück:
Hallo, Test1
Hallo,

Warum füllt er das zweite Feld nicht aus???
Danke für Eure Hilfe!!!
luigi

Hallo,

ich habe ein großes Problem:

Richtig, du probierst Arbeit von Hand zu machen, die ein Modul schon (besser) gelöst hat.

> #!/usr/Perl/bin/perl -w  
> #  
> # Das Script name.pl  
> ######################################################################  
> # Formularinhalt holen  
>   
> read(STDIN, $buffer, $ENV{'CONTENT\_LENGTH'});  
>   
> @pairs = split(/&/, $buffer);  
>   
> foreach $pair (@pairs) {  
> ($name, $value) = split(/=/, $pair);  
> $value =~ tr/+/ /;  
> $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",  
> hex($1))/eg;  
>   
> $FORM{$name} = $value;

An dieser Stelle endet deine Schleife nicht, sondern führt jedes Mal auch noch folgendes aus:

> print "Content-type: text/html\n\n";  
> print qq|  
>   
>   
> Ausgabe  
>   
>   
>   
> Hallo, $FORM{'fullname'}  
>   
> Hallo, $FORM{'lastname'}  
>   
>   
>   
> |;  
> exit;

Naja, und sobald ein ‚exit‘ auftaucht, beendet es halt.

Du kannst dir die ganze Schleife sparen, indem du am Anfang ein

use CGI qw/:standard/;

schreibst, dann kannst du auf die Parameter mit

my $full\_name = param('fullname');

zugreifen.

Außerdem empfehle ich, am Anfang des CGI-Scripts noch folgendes einzufügen:

use strict; # du musst variablen Deklarieren
use warnings;
use CGI::Carp qw(fatalsToBrowser); # hilfreich beim debuggen

Grüße,
Moritz

Hallo Moritz,

kannst Du die von Dir angegebenen Anweisungen einmal direkt an den richtigen Stellen ins Script schreiben? Weil ich bin zu blöd.
Vielen Dank