Perl
Wie kann ich beim Versenden einer E-Mail durch ein Perl-Script die Absenderadresse der E-Mail angeben?
Um eine E-Mail aus Perl heraus zu versenden wird in der Regel das Sendmail-Programm aufgerufen. Sendmail kann beim Aufruf eine Absenderadresse mit der Option -f übergeben werden:
$Sendmail_Prog = "/usr/lib/sendmail -femail\@adresse.de";
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);
Warum kann ich mein Perl-Script nicht ausführen?
Probleme können folgende Ursachen haben
- bei der FTP-Übertragung sollte der ASCII-Mode eingeschaltet sein
- ist das Script ausführbar?
- stimmen die Pfade?
- darf der Webserver das Script lesen und ausführen (Dateiberechtigung sollte auf 755 bzw. rwxr-xr-x gesetzt sein)?
- sind die benötigten Funktionsbibliotheken verfügbar?
- stimmt der Pfad zum Perl Interpreter (/usr/bin/perl)
- wird der richtige Content-Type ausgegeben (z.B. print "Content-Type: text/html\n\n")
Welche Perl-Bibliotheken sind installiert?
- Apache::DBI
- AppConfig
- Bundle::LWP
- DBD::mysql
- DBI
- Devel::Symdump
- GD
- HTML::Parser
- HTML::Tagset
- IO-stringy
- Image::Size
- Mail::Sendmail
- OLE::Storage_Lite
- PDF::Create
- Spreadsheet::ParseExcel
- Template
- Unicode::String
- URI
- XML::NamespaceSupport
- XML::Parser
- XML::SAX
- XML::Writer
- XML::XPath
- mod_perl
Wie kann ich die Perl-Fehlermeldungen sichtbar machen?
In einer CGI-Umgebung werden die Ausgaben von STDERR in das Fehler-Logfile des Webservers umgeleitet. Nur STDIN und STDOUT werden auf den Browser geleitet. Um Fehlermeldungen nach STDOUT ausgeben zu können, kann man folgenden "Trick" nutzen (nach Ausgabe der HTTP-Headers):
open (STDERR, ">&STDOUT");
Dadurch werden alle Fehlermeldungen nach STDOUT (also dem Browser) ausgegeben. In produktiven Umgebungen sollte diese Umleitung wieder entfernt werden.

