Perl: Fehler bei Übergabe von (String)Variablen
-
Hallo,
ich habe ein Formular in Javascript geschrieben und einen dazugehörigen Mailer in Perl geschrieben, weil das Formular lokal ausgeführt, aber dann online versendet werden muss
Mit dem Formular (per Mail dann) soll der Name und die Station übertragen werden
.. <TEXTAREA name="name_vorname" rows=1 cols=40>Name, Vorname</TEXTAREA> .. <select name="station"> <option value="fehlt" class="pflichtus" selected>Station wählen</option> ...
Leider finde ich nach mehrmaliger intensiver Fehlersuche immer noch keinen Fehler in meinem Perl-Script. Deswegen poste ich das mal hier und hoffe, dass mir einer von euch weiterhelfen kann:
#!c:perl/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); #"Sender" Modul einbinden use Mail::Sender; my $sender; #instanz von Sender machen ref ($sender = new Mail::Sender {from => 'XX@yy.com', to => 'CX@yy.com', fake_from => 'Intranet', smtp => 'mail.irgendwas.com', debug => 'D:/transfer.txt'}) or die "Error($sender) : $Mail::Sender::Error\n"; ; my $htmlfile = "P:/root/CGI-BIN/daten/formular.htm"; #liest formular daten ein von STDIN (standard eingabe), #schreibt alle zeichen in $formulardaten rein bis zu der zah die in $ENV{'CONTENT_LENGTH'} steht (länge des datenstroms) read(STDIN, my $formulardaten, $ENV{'CONTENT_LENGTH'}); #teilt die daten auf bei jedem '&' und schiebt sie in die Liste @felder my @felder = split(/&/, $formulardaten); #definiert gleichzeitig die skalare $aktuellesfeld, $feldname, $feldwert, $fehler my ($aktuellesfeld, $feldname, $feldwert, $fehler, $drucken,); #definiert den hash %dekubitusfeld my %dekubitusfeld; #array für die datei ausgabe my @dateizugabe; #schleife geht durch die liste und weist den aktuellen wert $aktuellesfeld zu foreach $aktuellesfeld (@felder) { #teilt den String String auf in teile zwischen '=' Zeichen, ergo in Name und Wert (my $feldname, my $feldwert) = split(/=/, $aktuellesfeld); #tr/suchmuster/ersetzmuster/ ergo sucht nach '+' und ersetzt durch leerzeichen $feldwert =~ tr/+/ /; #sucht nach regulären ausdruck und ersetzt ihn, dann optionen $feldwert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $feldwert =~ s/</</g; $feldwert =~ s/>/>/g; $feldwert =~ s/_/ /g; $dekubitusfeld{$feldname} = $feldwert; $feldname =~ s/_/ /g; if($feldname eq "wert") { push(@dateizugabe, "<tr><td><FONT face=Arial size=2><b>$feldname:</font></b></td><td><FONT face=Arial size=2><STRONG>$feldwert</STRONG></font></td>\n"); } else { push(@dateizugabe, "<tr><td><FONT face=Arial size=2><b>$feldname:</font></b></td><td><FONT face=Arial size=2>$feldwert</font></td>\n"); } } push(@dateizugabe,"<tr><td colspan=2 align='center'><a href='javascript:window.print()'><FONT face='Arial' size='3' color='#167a58'><b>DRUCKEN</b></a></FONT></td></tr>\n"); push(@dateizugabe,"</TBODY></TABLE></body></html>\n"); open(DEKUBITUSDATEN, ">$htmlfile") || die "Cannot open $htmlfile : $!\n"; print DEKUBITUSDATEN "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN'>\n<html><body bgcolor=#f7fff7> <FONT face=Arial size=3><STRONG>Formular aus dem Intranet<BR> </STRONG></FONT>\n<TABLE><TBODY>\n"; print DEKUBITUSDATEN @dateizugabe; close(DEKUBITUSDATEN); $sender->MailFile({ subject => "Neues Formular von $dekubitusfeld{station}", msg => "Eine neues Formular wurde für den Besucher $dekubitusfeld{name_vorname} der Station $dekubitusfeld{station} abgeschickt", file => $htmlfile}) or die $Mail::Sender::Error,"\n"; #Zweit ansicht print "Content-type: text/html\n\n"; print <<"ZWEITANSICHT"; <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN'> <html><body bgcolor=#f7fff7> <FONT face=Arial size=4 color="#167a58"><STRONG>Formular wurde verschickt!</STRONG><BR> </FONT> <TABLE><TBODY> ZWEITANSICHT print @dateizugabe;
-
zur kenntnis genommen
PS:
war doch nur ein status report von dem was du gerade tust, oder?
-
Shade Of Mine schrieb:
zur kenntnis genommen
PS:
war doch nur ein status report von dem was du gerade tust, oder?ähh, sorry,
ne, war kein Statusreport.
War vielleicht ein bisschen unverschämt von mir, einfach so den ganzen Code zu posten.
Mein Problem ist, dass er beim versenden der Mail die Variablen dekubitusfeld{station} und {name_vorname} nicht einfügt.Es steht einfach nur der Text da, also "Eine neues Formular wurde f|r den Besucher der Station abgeschickt"
und ich weiss einfach nicht, warum er nicht die Variable aus dem Formular übernimmt