1

例如,

#!/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'; 

在第一个示例中,我们破坏了文件(将它们截断为零长度)。其次,我们清理目录,然后创建新文件。

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

哪个被认为是最佳实践?(我怀疑这个问题很迂腐,第一个例子更常见。)


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

4

1 回答 1

2

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

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

于 2013-03-26T16:36:49.463 回答