加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何生成随机唯一临时文件名?

发布时间:2020-12-15 23:29:53 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用以下代码创建临时文件: use File::Temp ; $tmp = File::Temp-new( TEMPLATE = 'tempXXXXX',DIR = 'mydir',SUFFIX = '.dat'); 这是创建临时文件.由于我的权限问题,其他程序无法写入文件. 所以我只想生成文件名而不创建文件.有什么地方可以做到
我正在尝试使用以下代码创建临时文件:

use File::Temp  ;
 $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX',DIR => 'mydir',SUFFIX => '.dat');

这是创建临时文件.由于我的权限问题,其他程序无法写入文件.

所以我只想生成文件名而不创建文件.有什么地方可以做到吗?

解决方法

如果在创建名称的同时未创建文件,则可以在手动创建文件之前创建具有相同名称的文件.如果您需要使用其他进程打开文件,只需先关闭它:

#!/usr/bin/perl

use strict;
use warnings;

use File::Temp;

sub get_temp_filename {
    my $fh = File::Temp->new(
        TEMPLATE => 'tempXXXXX',DIR      => 'mydir',SUFFIX   => '.dat',);

    return $fh->filename;
}

my $filename = get_temp_filename();

open my $fh,">",$filename
    or die "could not open $filename: $!";

处理权限问题的最佳方法是确保运行这两个程序的用户都在同一个组中.然后,您可以使用chmod更改第一个程序内的权限,以允许第二个程序(或该组中的任何用户)修改该文件:

my $filename = get_temp_filename();

chmod 0660,$filename;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读