2014-01-08 5 views
0

Привет, я пишу скрипт perl, я делал push (@ var1, $ var2) в @var, значения будут храниться и передают значение этого массива в почтовой системе ("echo @ var1 | mail -s \ "perlmailformat \" xyz.perlmonks \ @ example.com ") ;. Следовательно, успех в получении почты, но значения сгруппированы друг с другом без каких-либо новых строк. Пожалуйста, дайте мне знать, как сделать почтовый формат в script или sysntaxPerl формат почты с новой строкой

ответ

-1

Вставьте новую строку в массив, прежде чем передавать ее команде mail.

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

Вы интерполяция @var1 в команду оболочки, которая является чрезвычайно небезопасным делом. Он также печатает все элементы в массиве в одной строке, потому что интерполяция массива в строку объединяет все элементы с одним пространством (и команда echo просто печатает все свои аргументы в одну строку с пробелами между ними и одной новой строкой в конце).

Вы хотите open трубу к команде mail:

my $subject = "perlmailformat"; 
my $address = "[email protected]"; 

# 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: $!"; 

Это полностью обходит оболочку, и является, таким образом, намного безопаснее.

Смежные вопросы