Diff for /processmail/processmail.pl between versions 2.1 and 3.3

version 2.1, 2005/01/24 03:14:49 version 3.3, 2013/10/30 19:28:30
Line 1 Line 1
 #!/usr/local/bin/perl  #!/usr/bin/perl
 #$Id$  #$Id$
 #  #
 #  #
Line 8 Line 8
     use Getopt::Std;       use Getopt::Std; 
   
 $usage = 'processmail.pl $Revision$, $Date$'. "\n".  $usage = 'processmail.pl $Revision$, $Date$'. "\n".
 "Usage: processmail.pl [-d] [-t table_file] [-m mail_file]  [-o results] \n";  "Usage: processmail.pl [-d] [-t table_file]  [-o results] \n";
   
 require 'parameters.pl';  require 'parameters.pl';
 require 'subroutines.pl';  require 'subroutines.pl';
   
 die $usage unless getopts('t:m:o:d');  die $usage unless getopts('t:o:d');
   
 $DEBUG=$opt_d;  $DEBUG=$opt_d;
   
   # Находим максимальный и минимальный вопрос и слегка подстраховываемся.
   $MINQUEST=1e99;
   $MAXQUEST=-1;
   for (my $r=1; $r<=$ROUNDS; $r++) {
       if ($MINQUEST>$MINQUEST[$r]) {
           $MINQUEST=$MINQUEST[$r];
       }
       if ($MAXQUEST<$MAXQUEST[$r]) {
           $MAXQUEST=$MAXQUEST[$r];
       }
   }
   if ($MINQUEST < 0 || $MAXQUEST < 0) {
      die "Отрицательные номера вопросов не поддерживаются!\n";
   }
   
   
 my %teams;  my %teams;
 my @answers;  my @answers;
Line 31  if ($opt_t) Line 46  if ($opt_t)
 }  }
   
 #  #
 # Читаем ответы команд  # Читаем ответы команд для ВСЕХ зачётов
 #  #
 if ($opt_m)  for (my $r=1; $r<=$ROUNDS; $r++) {
 {      foreach my $file ( @{$FILES[$r]} ) {
     die "Cannot open $opt_m\n" unless open(INFILE,$opt_m)          open (INFILE, $file);
 }          readmail(\%teams);
 else          collect_answers(\%teams,\@answers);
 {          close (INFILE);
     *INFILE=*STDIN;      }
 }  }
 readmail(\%teams);  
 close(INFILE);  
 #  
 # Чистим хэш %answers  
 #  
 collect_answers(\%teams,\@answers);  
 #  #
 # Пишем измененную таблицу в файл.  # Пишем измененную таблицу в файл.
 #  #
Line 55  if ($opt_o) Line 65  if ($opt_o)
     die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o");      die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o");
     select OUTFILE;      select OUTFILE;
 }  }
 for ($i=1;$i<=$MAXQUEST;$i++)  for ($i=$MINQUEST;$i<=$MAXQUEST;$i++)
 {  {
     foreach $symbol ('+','-','?')      foreach $symbol ('+','-','?')
     {      {
Line 64  for ($i=1;$i<=$MAXQUEST;$i++) Line 74  for ($i=1;$i<=$MAXQUEST;$i++)
 }  }
 print "***\n";  print "***\n";
   
   #
   # На всякий случай проверяем на наличие команд с дублирующимися номерами.
   #
   check_dup_numbers(\%teams);

Removed from v.2.1  
changed lines
  Added in v.3.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>