2014-11-21 69 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