Moin Moin!
»» > open(SM, "|/usr/sbin/sendmail -oi -t") or die("No Sendmail $!");
»»
»» Wie wär's mit -e?Ist ja schon peinlich einfach.
Wer kommt auch auf die Idee, dass ein Programm auch nur ein File ist.
Eben deshalb willst Du auch nicht auf Existenz (-e) prüfen, sondern auf ein plain file (-f). Und außerdem möchtest Du auch noch prüfen, ob das File ausführbar ist (-x).
die "no sendmail? Died" unless -f "/usr/sbin/sendmail" && -x _;
# Schon tot auf einigen älteren Systemen mit sendmail in /usr/lib oder noch perverseren Verstecken.
# Einige CPU-Zyklen später, gerade als root sendmail gegen exim ersetzt hat:
open SM,"|/usr/sbin/sendmail -oi -t" or die "Can't open pipe to /usr/sbin/sendmail: $!";
# ... und tot! ;-)
Sendmail ist eine Plage. Wenn Du Mails loswerden willst, sprich SMTP mit einem willigen Mailserver (z.B. localhost:25 oder localhost:547, oder Smart Host des Providers). MIME::Lite ist dafür hervorragend geeignet. Alte Versionen vor 3.022 haben den selten dämlichen Bug, dass es zur Laufzeit prüft, ob sendmail vorhanden und ausführbar ist, obwohl es gar kein sendmail braucht.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".