Как получить уникальное имя файла в Perl - PullRequest
4 голосов
/ 02 октября 2011

Я хочу создать в каталоге много небольших файлов с уникальными именами из многих процессов. Теоретически имена файлов могут быть одинаковыми, так как мне это учитывать? Какой модуль мне следует использовать для этой цели? Файлы должны быть сохранены.

Ответы [ 5 ]

13 голосов
/ 02 октября 2011

Возможно, вы захотите использовать File::Temp для этого.

($fh, $filename) = tempfile($template, DIR => $your_dir, UNLINK => 0);
5 голосов
/ 02 октября 2011

Используемый пакет будет File :: Temp .

5 голосов
/ 02 октября 2011

Добавить отметку времени к каждому файлу с точностью до миллисекунды:

#!/usr/local/bin/perl
use Time::HiRes qw(gettimeofday);

my $timestamp = int (gettimeofday * 1000);
print STDOUT "timestamp = $timestamp\n";
exit;

Вывод:

timestamp = 1227593060768
3 голосов
/ 02 октября 2011

Без каких-либо модулей вы можете использовать что-то вроде этого: time() . "_" . rand()

2 голосов
/ 02 октября 2011

$$ содержит идентификатор процесса работающей программы Perl. Поэтому его можно использовать в именах файлов, чтобы сделать их уникальными, по крайней мере, между экземплярами запущенного процесса.

...