Thread Hilfe mit Formular Script: CGI - Perl ### Formular
(30 answers)
Opened by Strat at 2004-01-16 12:37
[quote=Captain Future,18.01.2004, 11:18]
[/quote] Ups, das hatte ich beim ersten Mal uebersehen. Das klappt so nicht. Erstens sagst du durch das '$' bei $email_list, dass das Ergebnis ein Skalar sein soll, kein Array und keine Liste. Du moechtest jedoch mehrere Elemente aus @email_list, also hiesse es richtig "@email_list[$recipient, $recipient_bcc]". Zweitens muessen allerdings im "To:"-Feld die Adressen durch Kommata getrennt werden, was so natuerlich nicht geschieht. Einerseits koenntest du jetzt durch ein $"=','; erreichen, dass die Listenelemente durch Komma getrennt werden, aber in diesem Fall halte ich es fuer uebersichtlicher, die beiden Elemente hintereinander zu setzen: Code: (dl
)
print MAIL "To: $email_list[$recipient], $email_list[$recipient_bcc]\n"; Wozu brauchst du eigentlich die Variablen $recipient und $recipient_bcc? Sie koennen ja doch nur die Werte 0 und 1 haben. ??? Quote Die Fehlermeldung ist deshalb etwas missverstaendlich, weil Perl das gesamte Here-Document zur Zeile des Print-Befehls zaehlt. Der eigentliche Fehler ist zwar innerhalb des ausgegebenen Textes, aber einige Zeilen tiefer. Dort muss einfach ein '\' vor das '@', damit Perl nicht mehr denkt, du wolltest eine Arrayvariable @xyz4711 ausgeben. Quote Das Gleiche hier: Ersetze "webmaster@xyz4711" durch "webmaster\@xyz4711". Quote Tja, Perl hat festgestellt, dass irgendwo eine schliessende geschwungene oder eckige Klammer fehlt. Da Perl nicht weiss, wie die Logik des Programms aussieht, kann es dir auch nicht genauer sagen, wo diese fehlt; nur ist am Ende des Programms eine zu wenig geschlossen. Wenn ich nun ueber den Text drueber schaue, dann hat Perl mehr als recht, denn es fehlt nicht nur eine, sondern ganz viele Klammern: In allen Zeilen der Form Code: (dl
)
if ($FORM{'Kacheloefen'} ne "") {print MAIL "$FORM{'Kacheloefen'}\n"; fehlt hinten die schliessende geschwungene Klammer! Da hast du noch etwas Arbeit. :) Uebrigens: Diese Zeilen kannst du auch so schreiben: Code: (dl
)
print MAIL "$FORM{Kacheloefen}\n" if $FORM{Kacheloefen} ne ""; Da kann man sich dann die Klammern wirklich sparen. ;) |