¿Por qué no puede tubería que la salida de uuencode a mailx en una sola instrucción abierta Perl?

StackOverflow https://stackoverflow.com/questions/2519074

Pregunta

Aquí está mi código que no está funcionando:

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);

El comando mailx funciona bien fuera de la línea de comandos, pero no en este contexto script en Perl.

¿Alguna idea de lo que me falta?


Sospecho que el formato de esta línea / sintaxis:

open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";

es el culpable.

¿Fue útil?

Solución

Sólo necesitas una | adicional al principio:

open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to"; 

Otros consejos

¿Realmente desea utilizar los binarios externos, ya sea para el uuencode o el bit mailx? UUencode es casi trivial con paquete .

Hay otras maneras de enviar correo. Vea la ¿Cómo puedo enviar un mensaje? en perlfaq9 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top