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/</&lt;/g;
    $feldwert =~ s/>/&gt;/g;
    $feldwert =~ s/_/&nbsp;/g;
    
    $dekubitusfeld{$feldname} = $feldwert;
    
    $feldname =~ s/_/&nbsp;/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>&nbsp;</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>&nbsp;</FONT>
    <TABLE><TBODY>
    
    ZWEITANSICHT
    
    print @dateizugabe;
    

  • Mod

    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 😕


Anmelden zum Antworten