1

我有一个将散列转储到“output.txt”文件中的 Perl 脚本。问题是,每次我运行这个脚本时,相同的“output.txt”文件都会被覆盖。如何在每次运行脚本时生成一个新的“.txt”文件,以便每次运行都将结果保存在单独的文件中?

我现在在我的 perl 脚本末尾有这样的东西:

print Dumper( \%data );
open my $temp, '>', 'output.txt' or die $!;
print $temp Dumper \%data;
close $temp;
4

1 回答 1

2

您可以使用时间戳作为文件名的一部分。我猜你的脚本每秒运行的频率不会超过一次。

所以代替固定'output.txt'使用

my $time = time; # seconds since 1970-01-01
my $filename = "output_$time.txt"; # output_1427737784.txt

或者

use DateTime;
my $now = DateTime->now;
my $filename = "output_$now.txt"; # output_2015-03-30T17:49:16.txt

如果您需要更多文件名或只是不喜欢时间戳,File::Temp则可以进行救援。它不仅会为您创建一个随机文件名,还会立即打开文件(防止死锁)并返回文件句柄。

use File::Temp 'tempfile';
my ($fh, $filename) = tempfile(); # replaces open()
于 2015-03-30T17:49:53.393 回答