私は問題はあなたのプログラムが改行"\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
'open(W_VAR、" >> "、" $ pathfile ")を試してください。 printf( "%s \ n"、$ filepathを開くことができません); - エラーが発生したかどうかを確認してください – scibuff
は最初の行に一重引用符がないようです。 – JoelFan