2014-11-21 2 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.

Смежные вопросы