如何在perl中获取唯一的文件名

时间:2011-10-01 20:29:01

标签: perl temporary-files

我想在目录中创建许多具有来自许多进程的唯一名称的小文件。理论上文件名可能是相同的,所以我该如何解释?我应该用什么模块来达到这个目的?文件应该保留。

5 个答案:

答案 0 :(得分:13)

您可能希望使用File::Temp

($fh, $filename) = tempfile($template, DIR => $your_dir, UNLINK => 0);

答案 1 :(得分:5)

为每个文件附加一个时间戳,最长为毫秒:

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

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

输出:

timestamp = 1227593060768

答案 2 :(得分:5)

要使用的包是File::Temp

答案 3 :(得分:3)

如果没有任何模块,您可以使用以下内容:time() . "_" . rand()

答案 4 :(得分:2)

$$包含正在运行的perl程序的进程ID。因此,它可以在文件名中使用,以使它们至少在正在运行的进程的实例之间是唯一的。