perl:打开文件句柄,写入它,稍后给它起一个名字?

719*_*016 2 perl file-handling temporary-files

我想我已经读过如何在某处做到这一点,但我无法找到.也许它只能用于新的(ish)Perl版本.我使用的是5.14.2:

我有一个Perl脚本,如果满足某些条件,它会将结果写入文件.根据脚本的结构写下结果,然后检查是否满足将结果保存到文件中的标准,这更合乎逻辑.

我想我已经读到了一些我可以将内容写入文件句柄的地方,在Linux中我想这将对应于一个临时文件或一些管道,然后给该文件命名,包括它应该在哪个目录, 稍后的.如果不是,则在脚本完成时将丢弃内容.

除了在临时文件周围进行操作并手动删除它们之外,是否有一种直接的方法在Perl中执行此操作?

pil*_*row 6

对于您描述的内容,没有简单的(UNIX)工具,但行为可以由基本系统操作组成.Perl的File :: Temp已经完成了你想要的大部分工作:

use File:Temp;

my $tmp = File::Temp->new;      # Will be unlinked at end of program.

while ($work_to_do) {
  print $tmp a_lot_of_stuff();  # $tmp is a filehandle
}

if ($save_it) {
  rename($tmp, $new_file);      # $tmp is also a string.  Move (rename) the file.
}                               # If you need this to work across filesystems, you
                                # might want to ``use File::Copy qw(move)'' instead.

exit;                           # $tmp will be unlinked here if it was not renamed
Run Code Online (Sandbox Code Playgroud)