Perl:破坏文件或删除文件并打开一个新文件会更好吗?

时间:2013-03-26 16:17:16

标签: perl bash unix

例如,

#!/usr/bin/perl

open FILE1, '>out/existing_file1.txt'; 
open FILE2, '>out/existing_file2.txt'; 
open FILE3, '>out/existing_file3.txt'; 

#!/usr/bin/perl

if (-d out) {
    system('rm -f out/*');
}

open FILE1, '>out/new_file1.txt'; 
open FILE2, '>out/new_file2.txt'; 
open FILE3, '>out/new_file3.txt'; 

在第一个例子中,我们clobber文件(将它们截断为零长度)。在第二步中,我们清理目录,然后创建新文件。

第二种方法(我们清理目录)似乎是多余的和不必要的。这样做的唯一好处(在我看来)是它重置权限,以及更改日期。

哪种被认为是最佳做法? (我怀疑这个问题很迂腐,第一个例子比较常见。)


编辑:我问的原因是因为我有一个脚本可以解析数据并将输出文件写入目录 - 每次都使用相同的文件名/路径。这个脚本将运行多次,我很好奇是否在脚本的开头我应该部分清理目录(我写的文件)或者只是让文件处理'>'为我诋毁文件,我自己不采取任何额外措施。

1 个答案:

答案 0 :(得分:2)

除了您提到的权限问题之外,这两种方法之间唯一的显着区别是,如果另一个进程在执行此操作时打开了其中一个输出文件。如果删除该文件然后重新创建它,则另一个进程将继续查看原始文件中的数据。如果你破坏文件,另一个进程将立即看到文件内容发生变化(尽管如果它使用缓冲的I / O,它可能不会注意到它,直到它需要重新填充缓冲区)。

删除文件也会更新包含目录的修改时间。