【发布时间】:2011-03-15 07:38:24
【问题描述】:
我使用 perl 为 mailx 编写了一个包装程序,它允许我轻松添加附件并做一些其他漂亮的事情,这些事情用 mailx 完成时有点令人沮丧。
在前几行我有:
use strict;
use warnings;
use Getopt::Long;
my ( $to, $from, $subject, $attachments, $body, $file ) = (undef) x 7;
GetOptions(
"to=s" => \$to,
"from=s" => \$from,
"subject=s" => \$subject,
"attachments=s" => \$attachments,
"body=s" => \$body,
"file=s" => \$file,
);
$to = getlogin unless $to;
$from = getlogin unless $from;
$subject = " " unless $subject;
到目前为止,当被其他脚本调用时,这个包装器运行良好。然而,现在我们有一个由 Cron 运行的脚本,一些有趣的事情正在发生。此 Cron 作业仅通过指定 -t 和 -su 而省略 -fr 来调用包装器(是的,正在使用标志的缩写)。生成的电子邮件正确设置了收件人:但是发件人列为 -s@blah.com,主题行为空白。根据上面的代码,我只能假设 Cron 和 Getopt::Long 模块之间发生了一些奇怪的事情。有谁知道为什么 Cron 作业可能会导致这种奇怪的行为?如果是其他问题,那会是什么?
【问题讨论】:
-
(undef) x 7很聪明,但是 undef 是新的标量变量声明的默认值,所以这里不需要它。