version 2.2, 2005/01/24 03:16:35
|
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); |