Thread Hilfe mit Formular Script: CGI - Perl ### Formular (30 answers)
Opened by Strat at 2004-01-16 12:37

Dubu
 2004-01-18 15:05
#28177 #28177
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Captain Future,18.01.2004, 11:18]
Code: (dl )
1
2
### Line 130 ###
print MAIL "To: $email_list[$recipient, $recipient_bcc]\n";

[/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
Code: (dl )
1
2
3
4
5
6
7
### Line 169 ###
print <<"ENDE"
<html>
...
href="mailto:webmaster@xyz4711.de"><i>Webmaster</i></a></font></b></font>
...
ENDE

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
Code: (dl )
1
2
3
4
5
6
7
### Line 203 ###
print <<"FIN"
<html>
...
href="mailto:webmaster@xyz4711.de"><i>Webmaster</i></a></font></b></font>
...
FIN

Das Gleiche hier: Ersetze "webmaster@xyz4711" durch "webmaster\@xyz4711".

Quote
[Sun Jan 18 10:36:44 2004] formpost.pl: Missing right curly or square bracket at formpost.pl line 233, at end of line
[Sun Jan 18 10:36:44 2004] formpost.pl: syntax error at formpost.pl line 233, at EOF

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. ;)

View full thread Hilfe mit Formular Script: CGI - Perl ### Formular