在Perl中,
如何一次阅读多个文件,
在月底生成报告,
每天会创建一个日志文件,
我想阅读整个月份的文件,
我的文件就像这样t.log.mmddyyy
答案 0 :(得分:1)
glob
函数将允许您检索与特定模式匹配的文件名列表。如果您将该列表加载到@ARGV
,那么您可以处理所有文件 - 即使按顺序进行单循环:
use strict;
use warnings;
use Getopt::Long;
sub usage ($) {
my $msg = shift;
die <<"END_MSG";
*** $msg
Usage: $0 --month=nn --year=nn PATH
END_MSG
}
GetOptions( 'month=i' => \my $month, 'year=i' => \my $year );
usage "Month not specified!" unless $month;
usage "Year not specified!" unless $year;
usage "Invalid month specified: $month" unless $month > 0 and $month < 13;
usage "Invalid year specified: $year" unless $year > 0;
my $directory_path = shift;
die "'$directory_path' does not exist!" unless -d $directory_path;
@ARGV = sort glob( sprintf( "$directory_path/t.log.%02d??%02d", $month, $year ));
while ( <> ) { # process all files
...
}
答案 1 :(得分:0)
你可以做一个