Perl将日期/时间添加到文件名

时间:2014-11-21 08:34:45

标签: perl file datetime

我使用以下脚本通过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;
}

现在我想用当前日期作为文件名保存文件。如何用上面的代码中的当前日期替换文件名?

1 个答案:

答案 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