Pourquoi ne puis-je tuyau la sortie de Uuencode à mailx dans une seule instruction ouverte Perl?

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

Question

Voici mon code qui ne fonctionne pas:

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

La commande mailx fonctionne très bien sur la ligne de commande, mais pas dans ce contexte de script Perl.

Toute idée de ce que je suis absent?


Je soupçonne que le format / syntaxe de cette ligne:

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

est le coupable.

Était-ce utile?

La solution

Vous avez juste besoin d'un | supplémentaire au début:

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

Autres conseils

Voulez-vous vraiment utiliser les binaires externes soit pour le uuencode ou le bit mailx? UUencode est presque trivial avec emballer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top