【问题标题】:Why can't I pipe the output of uuencode to mailx in a single Perl open statement?为什么我不能在单个 Perl open 语句中将 uuencode 的输出通过管道传输到 mailx?
【发布时间】:2010-03-25 20:23:21
【问题描述】:

这是我的代码不起作用:

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

是罪魁祸首。

【问题讨论】:

  • fyi - 当 uuencode $attach $attach 从以“open”开头的行中删除时,整个脚本都可以工作

标签: perl unix attachment hp-ux mailx


【解决方案1】:

你只需要在开头多加一个|

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

【讨论】:

    【解决方案2】:

    您真的想为 uuencode 或 mailx 位使用外部二进制文件吗?使用pack,UUencode 几乎是微不足道的。

    【讨论】:

    【解决方案3】:

    还有其他发送邮件的方法。请参阅perlfaq9 中的How do I send mail?

    【讨论】:

      猜你喜欢
      • 2019-08-17
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多