Perl читать несколько файлов - PullRequest
0 голосов
/ 23 февраля 2011

в Perl,

Как читать несколько файлов одновременно,

генерирует отчет в конце месяца,

в день, создается один файл журнала,

я хочу прочитать файлы за весь месяц,

мой файл выглядит примерно так t.log.mmddyyy

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Функция 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 
    ...
}
0 голосов
/ 23 февраля 2011

вы можете сделать

  • readdir для получения списка файлов в каталоге
  • анализирует каждое имя файла, чтобы убедиться, что оно соответствует вашему формату
  • открыть и прочитать каждый файл
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...