我使用glob
函数使用通配符捕获目录中的文件并将其存储在数组中。我在windows上这样做。
我能够捕获正确的文件,然后我需要邮寄它,但它只捕获名称而不是完整的文件,即在邮件中我没有得到文件的内容。以下是我脚本的片段。请告诉我出错的地方。
opendir(DAPATH,$sDAPATH) or die "Can't open $sDAPATH: $!";
print OUTLOG "\nfound da path : $sDAPATH\n";
my @adirs = readdir(DAPATH);
print OUTLOG "Starting capturing DA\n";
print OUTLOG "checking if we have value of run id : $runVar\n";
my $pattern = "*$runVar.csv";
print OUTLOG "$pattern\n";
($pattern) = @_;
@da =glob ("$sETLDAPATH/*$runVar.csv");
print OUTLOG "da file : @da\n";
print OUTLOG "Assigned DA\n";
closedir(DAPATH);
答案 0 :(得分:1)
我认为您应该使用MIME::Lite 模块发送带附件的电子邮件。
示例:
use MIME::Lite;
my $msg = MIME::Lite->new(
From => 'sur@example.com',
To => 'serenesat@example.com',
Bcc => 'test@example.com',
Subject => "Use of MIME::Lite",
Type => "text/plain",
);
$msg->attach(
Type=> "TEXT",
Path =>"/path/to/file",
Filename =>"filename.txt",
);
$msg->send;
glob
提供完整的文件路径。之后,您需要阅读并篡改文件的内容。为此,您可以使用File::Slurp'read_file
函数:
Use File::Slurp::read_file;
# read in a whole file into a scalar
my $text = read_file( 'filename' );
如果您无法安装File::Slurp
模块,可以这样做:
foreach my $file (@da)
{
open my $fh, '<', $file or die $!;
my $text = do {
local $/;
<$fh>
};
close $fh;
}