Дамп Perl-хэш в новый текстовый файл при каждом запуске скрипта
У меня есть Perl-скрипт, который сбрасывает хэш в файл "output.txt". Проблема в том, что каждый раз, когда я запускаю этот скрипт, один и тот же файл output.txt перезаписывается. Как мне генерировать новый файл ".txt" каждый раз, когда я запускаю скрипт, чтобы у меня были результаты в отдельных файлах для каждого запуска?
У меня есть что-то вроде этого прямо сейчас в конце моего сценария Perl:
print Dumper( \%data );
open my $temp, '>', 'output.txt' or die $!;
print $temp Dumper \%data;
close $temp;
1 ответ
Вы можете использовать метку времени как часть имени файла. Я полагаю, ваш скрипт не запускается чаще, чем раз в секунду.
Так что вместо исправленного 'output.txt'
использование
my $time = time; # seconds since 1970-01-01
my $filename = "output_$time.txt"; # output_1427737784.txt
или же
use DateTime;
my $now = DateTime->now;
my $filename = "output_$now.txt"; # output_2015-03-30T17:49:16.txt
Если вам нужно больше имен файлов или просто не нравится отметка времени, File::Temp
на помощь. Он не только создает случайное имя файла для вас, но также немедленно открывает файл (безопасный от мертвых блокировок) и возвращает дескриптор файла.
use File::Temp 'tempfile';
my ($fh, $filename) = tempfile(); # replaces open()