2014-11-21 76 views
1

我正在使用以下脚本通过http和实用程序方法下载文件以获取当前日期。Perl将文件名添加日期/时间

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

有没有简单的方法来做到这一点。您可以做的最好做法是创建一个临时目录,使用默认名称获取文件,然后将其重命名为您需要的名称。使用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