【问题标题】:How to get a unique filename in perl如何在perl中获取唯一的文件名
【发布时间】:2011-10-01 20:29:01
【问题描述】:

我想在一个目录中创建许多来自许多进程的具有唯一名称的小文件。理论上文件名可能相同,那么我该如何解释呢?为此我应该使用什么模块?文件应该是持久化的。

【问题讨论】:

标签: perl temporary-files


【解决方案1】:

您可能想为此使用File::Temp

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

【讨论】:

  • File::Temp创建的文件不会在进程结束时消失吗?
  • @ennuikiller 显然有一个UNLINK 选项。
  • File::Temp 写入后关闭文件?
【解决方案2】:

要使用的包是File::Temp

【讨论】:

    【解决方案3】:

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

    #!/usr/local/bin/perl
    use Time::HiRes qw(gettimeofday);
    
    my $timestamp = int (gettimeofday * 1000);
    print STDOUT "timestamp = $timestamp\n";
    exit;
    

    输出:

    timestamp = 1227593060768
    

    【讨论】:

    • 意识到我的第一个示例没有正确设置时间戳,所以使用 Time::HiRed 模块。
    【解决方案4】:

    没有任何模块你可以使用这样的东西:time() . "_" . rand()

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 2013-02-10
        • 2011-04-26
        • 1970-01-01
        • 2022-01-01
        • 2015-07-21
        相关资源
        最近更新 更多