Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中获得唯一的文件名_Perl_Temporary Files - Fatal编程技术网

如何在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模块。