我正在尝试使用以下代码创建临时文件:
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;