我使用以下脚本通过http和实用程序方法下载文件以获取当前日期。
use File::Fetch;
use DateTime qw();
sub getDateUtility{
return DateTime->now->strftime('%m/%d/%Y')
}
sub fetchFile{
my $fileHandler = File::Fetch->new(uri => 'http://sample.com/file2fetch.txt');
my $placeFile = $fileHandler->fetch() or die $fileHandler->error;
}
现在我想用当前日期作为文件名保存文件。如何用上面的代码中的当前日期替换文件名?
答案 0 :(得分:1)
没有简单的方法可以做到这一点。您可以做的最好的事情是创建一个临时目录,使用默认名称获取该文件,然后将其重命名为您需要的名称。使用File::Temp::tempdir
:
use File::Fetch;
use DateTime qw();
use File::Temp qw( tempdir );
sub getDateUtility {
return DateTime->now->strftime('%m_%d_%Y')
}
sub fetchFile {
my ($url, $destination) = @_;
my $tempdir = tempdir( CLEANUP => 1 );
my $fetcher = File::Fetch->new(
uri => $url,
to => $tempdir,
);
my $fetched = $fetcher->fetch() or die $fetcher->error;
rename($fetched, $destination);
}
fetchFile('http://ec2-54-169-147-210.ap-southeast-1.compute.amazonaws.com/export.php?test=141121_5N_39140a1bc54a1cf78c9b131ed52f8654', getDateUtility() . '.txt');
请注意,我更改了getDateUtility
函数以使用下划线_
作为分隔符,而不是斜杠/
,因为您不能在文件名中使用斜杠。
另请参阅:this question。