English 中文(简体)
Why can t I pipe the output of uuencode to mailx in a single Perl open statement?
原标题:

Here s my code that is not working:

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

The mailx command works fine off the command line, but not in this Perl script context.

Any idea what I m missing?


I suspect that this line s format/syntax:
open $mail_fh, "uuencode $attach $attach |mailx -m -s "$subject" -r $from $to";

is the culprit.

最佳回答

You just need an extra | at the beginning:

open $mail_fh, "|uuencode $attach $attach |mailx -m -s "$subject" -r $from $to"; 
问题回答

Do you really want to use external binaries for either the uuencode or the mailx bit? UUencode is almost trivial with pack.

There are other ways to send mail. See the How do I send mail? in perlfaq9.





相关问题
Why does my chdir to a filehandle not work in Perl?

When I try a "chdir" with a filehandle as argument, "chdir" returns 0 and a pwd returns still the same directory. Should that be so? I tried this, because in the documentation to chdir I found: "...

How do I use GetOptions to get the default argument?

I ve read the doc for GetOptions but I can t seem to find what I need... (maybe I am blind) What I want to do is to parse command line like this myperlscript.pl -mode [sth] [inputfile] I can use ...

Object-Oriented Perl constructor syntax and named parameters

I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...

Where can I find object-oriented Perl tutorials? [closed]

A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...

热门标签