Почему я не могу перенаправить вывод uuencode в mailx с помощью одного оператора Perl open? - PullRequest
1 голос
/ 25 марта 2010

Вот мой код, который не работает:

print "To: ";  my $to=<>;  chomp $to;
print "From: ";  my $from=<>;  chomp $from;
print "Attach: "; my $attach=<>; chomp $attach;
print "Subject: "; my $subject=<>; chomp $subject;
print "Message: "; my $message=<>; chomp $message;

my $mail_fh = \*MAIL;
open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
print $mail_fh $message;
close($mail_fh);

Команда mailx отлично работает из командной строки, но не в этом контексте сценария Perl.

Есть идеи, что мне не хватает?


Я подозреваю, что формат / синтаксис этой строки:
open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";

является виновником.

Ответы [ 3 ]

2 голосов
/ 26 марта 2010

Вам просто нужно дополнительно | в начале:

open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to"; 
2 голосов
/ 26 марта 2010

Вы действительно хотите использовать внешние двоичные файлы для кода uuencode или mailx?UUencode почти тривиален с pack .

1 голос
/ 26 марта 2010

Есть и другие способы отправки почты. См. Как мне отправить почту? в perlfaq9 .

...