每次脚本运行时将 Perl 哈希转储到新的 txt 文件中
Dump Perl hash into new txt file every time script runs
我有一个 Perl 脚本,可以将散列转储到 'output.txt' 文件中。问题是,每次我 运行 这个脚本,同一个 'output.txt' 文件都会被覆盖。我如何在每次 运行 脚本时生成一个新的“.txt”文件,以便我在每个 运行 的单独文件中得到结果?
我的 perl 脚本末尾现在有这样的东西:
print Dumper( \%data );
open my $temp, '>', 'output.txt' or die $!;
print $temp Dumper \%data;
close $temp;
您可以使用时间戳作为文件名的一部分。我猜你的脚本每秒 运行 不超过一次。
所以不要固定 '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
可以帮到您。它不仅会为您创建一个随机文件名,还会立即打开文件(防止死锁)和 returns 一个文件句柄。
use File::Temp 'tempfile';
my ($fh, $filename) = tempfile(); # replaces open()
我有一个 Perl 脚本,可以将散列转储到 'output.txt' 文件中。问题是,每次我 运行 这个脚本,同一个 'output.txt' 文件都会被覆盖。我如何在每次 运行 脚本时生成一个新的“.txt”文件,以便我在每个 运行 的单独文件中得到结果?
我的 perl 脚本末尾现在有这样的东西:
print Dumper( \%data );
open my $temp, '>', 'output.txt' or die $!;
print $temp Dumper \%data;
close $temp;
您可以使用时间戳作为文件名的一部分。我猜你的脚本每秒 运行 不超过一次。
所以不要固定 '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
可以帮到您。它不仅会为您创建一个随机文件名,还会立即打开文件(防止死锁)和 returns 一个文件句柄。
use File::Temp 'tempfile';
my ($fh, $filename) = tempfile(); # replaces open()