Folgendes Perl CGI Script läuft nicht

Hallo,

ich möchte ein Perl CGI Script schreiben, das Daten aus einem HTML-Formular per E-Mail an mich schick.
Folgendes CGI Sript funktioniert leider noch nicht:

#!/usr/local/bin/perl

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;
#}

$mailprog= „/usr/lib/sendmail“ ;

$recipient= „[email protected]“ ;

open(MAIL, „|$mailprog $recipient“)
|| &HTMLdie(„Couldn’t send the mail (couldn’t run $mailprog).“) ;

print MAIL „Reply-to: $FORM{‚email‘} ($FORM{‚name‘})\n“;

print MAIL „Subject: Form Data\n\n“;
print MAIL ‚$buffer‘;

foreach $key (keys(%FORM)) {
print MAIL „$key = $FORM{$key}\n“;
}

close(MAIL);

print Thank You
Thank you for writing. Your mail has been delivered.
Return to our home page.

Hi,

Folgendes CGI Sript funktioniert leider
noch nicht:

definiere „funktioniert nicht“. Was steht beispielsweise im Errorlog? Was sagt perl -c script.pl?

#!/usr/local/bin/perl

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

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

Den (leider viel zu weit verbreiteten) Quatsch möchtest Du durch

use CGI ‚:standard‘;

ersetzen und anschließend mit param(‚name‘) auf die Übergabeparameter zugreifen.

$mailprog= „/usr/lib/sendmail“ ;

my $mailprog = ‚/usr/lib/sendmail‘; # und prüfe auch nach, ob dieser Pfad auf Deinem Server stimmt

$recipient= „[email protected]“ ;

my $recipient = ‚[email protected]‘;

open(MAIL, „|$mailprog $recipient“)
|| &HTMLdie(„Couldn’t send the mail
(couldn’t run $mailprog).“) ;

Übergib in dem String noch die Variable $!, das könnte hilfreich sein. Lies bei Problemen auch

man sendmail

auf Deinem Server, oder benutze das Perl-Modul Mail::Mailer.

print MAIL ‚$buffer‘;

Hier wird die Zeichenkette(!) $buffer ausgegeben, nicht der Inhalt der Variablen. Streiche die Singlequotes ersatzlos.

foreach $key (keys(%FORM)) {
print MAIL „$key = $FORM{$key}\n“;
}

foreach (param) {
print MAIL "$_ = ", param($_), „\n“;
}

print Thank You

Das ist föllig valsch. Willst Du ein Here-Dokument ausgeben?

print