我怀疑问题是您的程序没有用换行符终止该行"\n"
。毫无疑问,您在手动编辑文件时将其放入文件中?
像这样的东西可能会解决它,但我手头没有 Linux 机器,所以我无法测试它。
use strict;
use warnings;
my $pathfile = 'path/to/file';
open my $w_var, '>>', $pathfile or die $!;
print $w_var "Hello\nWorld!\n";
close $w_var;
my $email_command = "mail -s header some\@emailaddress.com < $pathfile";
system $email_command;
编辑
但是使用Mail::Sendmail之类的东西会好得多。Email::Sender是迄今为止最好的,但连同它的依赖项一起,它是一个用于如此简单任务的巨大模块,我不愿在这里推荐它。
要使用的代码Mail::Sendmail
如下所示:
use strict;
use warnings;
use Mail::Sendmail;
my $pathfile = 'path/to/file';
open my $w_var, '>>', $pathfile or die $!;
print $w_var "Hello\n", "World!\n";
my $message = do {
open $w_var, '<', $pathfile or die $!;
local $/;
<$w_var>;
};
sendmail(
To => 'some@emailaddress.com',
From => 'my.address@email.com',
Message => $message,
)
or die $Mail::Sendmail::error;