Perl邮件格式与新行

时间:2014-01-08 08:31:53

标签: regex perl

您正在编写一个perl脚本,我正在@var中进行推送(@ var1,$ var2),这些值将被存储并在系统中传递该数组值(“echo @ var1 | mail -s \” perlmailformat \“xyz.perlmonks \ @ example.com”);因此我成功获得邮件,但价值相互之间没有任何新行。请让我知道如何在脚本或sysntax中制作邮件格式

2 个答案:

答案 0 :(得分:1)

您正在将@var1插入到shell命令中,这是一件非常不安全的事情。它还会在同一行中打印数组中的所有项目,因为将数组插入到字符串中会将所有项目连接到一个空格(echo命令只是将所有项目的参数打印到一行中,其间有空格最后一个换行符。)

您想要open mail命令的管道:

my $subject = "perlmailformat";
my $address = "xyz@example.com";

# open a pipe to "mail"
open my $mail, "|-", "mail", "-s" => $subject, $address
  or die "Can't open mail command: $!";

# print each line:
print { $mail } "$_\n" for @var1;

# close the pipe
close $mail or die "Couldn't send mail: $!";

这完全绕过了外壳,因此更加安全。

答案 1 :(得分:-1)

将新行传递到数组中,然后将其传递给mail命令。

push @var,"\n";
system("echo \"@var\" | mail -s \"perlmailformat\" xyz.perlmonks\@example.com");