如何在perl中获得唯一的文件名
我想在一个目录中创建许多来自许多进程的具有唯一名称的小文件。从理论上讲,文件名可能是相同的,那么如何解释呢?为此,我应该使用什么模块?文件应该是持久的。您可能想使用它如何在perl中获得唯一的文件名,perl,temporary-files,Perl,Temporary Files,我想在一个目录中创建许多来自许多进程的具有唯一名称的小文件。从理论上讲,文件名可能是相同的,那么如何解释呢?为此,我应该使用什么模块?文件应该是持久的。您可能想使用它 ($fh, $filename) = tempfile($template, DIR => $your_dir, UNLINK => 0); $$包含正在运行的perl程序的进程id。因此,可以在文件名中使用它,使它们至少在运行进程的实例之间唯一。为每个文件添加时间戳,最长可达毫秒: #!/usr/local/bin
($fh, $filename) = tempfile($template, DIR => $your_dir, UNLINK => 0);
$$包含正在运行的perl程序的进程id。因此,可以在文件名中使用它,使它们至少在运行进程的实例之间唯一。为每个文件添加时间戳,最长可达毫秒:
#!/usr/local/bin/perl
use Time::HiRes qw(gettimeofday);
my $timestamp = int (gettimeofday * 1000);
print STDOUT "timestamp = $timestamp\n";
exit;
输出:
timestamp = 1227593060768
如果没有任何模块,您可以使用如下内容:
time()。"_" . rand()
要使用的包是。您可以生成GUID并将其用作文件名的基础(例如,添加扩展名)。看到文件是临时的还是持久的了吗?由File::Temp创建的文件在进程结束时不会消失吗?@ennuikiller显然有一个取消链接
选项。File::Temp在写入后关闭文件?意识到我的第一个示例没有正确设置时间戳,所以使用Time::HiRed模块。