perl读取多个文件

时间:2011-02-23 16:09:08

标签: perl

在Perl中,

如何一次阅读多个文件,

在月底生成报告,

每天会创建一个日志文件,

我想阅读整个月份的文件,

我的文件就像这样t.log.mmddyyy

2 个答案:

答案 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)

你可以做一个

  • readdir获取目录中的文件列表
  • 解析每个文件名以确保其符合您的格式
  • 打开并阅读每个文件