2013-08-30 2 views
0

Как добавить системную дату в имя файла в perl?Как добавить системную дату в имя файла в perl?

Как я очень новичок в программировании на Perl, можете ли вы дать мне простой пример для вышеуказанного запроса.

+1

Создаете ли вы новые файлы или у вас есть существующие файлы для переименования? что ты уже испробовал? – RobEarl

+3

@JustCoder у вас попытался R & D проблемы самостоятельно. быстрый google может помочь вам! –

ответ

1

Это может помочь вам!

#!/usr/bin/perl 
my $date=`date +%Y%m%d`; 
chomp($date); 
my $source_file="/tmp/fileName_.tgz"; 
my $destination_file="/misc/fileName_" . $date . ".tgz"; 
print "$source_file\n"; 
print "$destination_file\n"; 
system("sudo mv /tmp/fileName_.tgz /misc/fileName_$date.tgz"); 

или попробовать этот

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 
$year += 1900; 

my $out = "$dir/$host-$mday-$mon-$year" 

или это один

# grab the current time 
my @now = localtime(); 

# rearrange the following to suit your stamping needs. 
# it currently generates YYYYMMDDhhmmss 
my $timeStamp = sprintf("%04d%02d%02d%02d%02d%02d", 
         $now[5]+1900, $now[4]+1, $now[3], 
         $now[2],  $now[1], $now[0]); 

# insert stamp into constant portion of file name. 
# the constant portion of the name could be included 
# in the sprintf() above. 
my $fileName = "File$timeStamp.log"; 
+1

Ваш первый пример основан на внешней программе под названием «дата» и поэтому не переносится. Второй пример содержит ошибку (месяц будет неправильным). Все ваши примеры игнорируют существование POSIX :: strftime(), что сделает все это намного проще. –

4

strftime() функция от POSIX модуля дает простой способ получить дату в любом формате вы хотите.

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 
use POSIX 'strftime'; 

my $date = strftime '%Y-%m-%d', localtime; 
say $date; 

Затем вы можете использовать эту строку в имени файла вашего файла. Если вы переименовываете файл, вы можете использовать move() из модуля File::Copy.

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