Дамп 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()
Другие вопросы по тегам