問題は、プログラムが改行"\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;