我怀疑的问题是,你的程序不以新行字符"\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 => '[email protected]',
From => '[email protected]',
Message => $message,
)
or die $Mail::Sendmail::error;
请包括你实际使用的代码的相关部分。 – Joni 2012-04-17 11:31:42
尝试'打开(W_VAR,“>>”,“$ pathfile”)|| printf(“无法打开%s \ n”,$ filepath);' - 看看你是否得到一个错误 – scibuff 2012-04-17 11:33:41
好像你错过了第一行的结束单引号 – JoelFan 2012-04-17 11:42:19