--- processmail/processmail.pl 2013/10/30 19:28:30 3.3 +++ processmail/processmail.pl 2008/03/23 17:50:50 3.0 @@ -1,5 +1,5 @@ -#!/usr/bin/perl -#$Id: processmail.pl,v 3.3 2013/10/30 19:28:30 boris Exp $ +#!/usr/local/bin/perl +#$Id: processmail.pl,v 3.0 2008/03/23 17:50:50 boris Exp $ # # # Исходные файлы и параметры @@ -7,7 +7,7 @@ use Getopt::Std; -$usage = 'processmail.pl $Revision: 3.3 $, $Date: 2013/10/30 19:28:30 $'. "\n". +$usage = 'processmail.pl $Revision: 3.0 $, $Date: 2008/03/23 17:50:50 $'. "\n". "Usage: processmail.pl [-d] [-t table_file] [-o results] \n"; require 'parameters.pl'; @@ -17,21 +17,6 @@ die $usage unless getopts('t:o: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 @answers; @@ -48,8 +33,16 @@ if ($opt_t) # # Читаем ответы команд для ВСЕХ зачётов # -for (my $r=1; $r<=$ROUNDS; $r++) { - foreach my $file ( @{$FILES[$r]} ) { + +$MAXQUEST=1; +for (my $i=1; $i<=$ROUNDS; $i++) { + if ($MAXQUEST<$MAXQUEST[$i]) { + $MAXQUEST=$MAXQUEST[$i]; + } +} + +for (my $i=1; $i<=$ROUNDS; $i++) { + foreach my $file ( @{$FILES[$i]} ) { open (INFILE, $file); readmail(\%teams); collect_answers(\%teams,\@answers); @@ -65,7 +58,7 @@ if ($opt_o) die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o"); select OUTFILE; } -for ($i=$MINQUEST;$i<=$MAXQUEST;$i++) +for ($i=1;$i<=$MAXQUEST;$i++) { foreach $symbol ('+','-','?') { @@ -74,7 +67,4 @@ for ($i=$MINQUEST;$i<=$MAXQUEST;$i++) } print "***\n"; -# -# На всякий случай проверяем на наличие команд с дублирующимися номерами. -# -check_dup_numbers(\%teams); +