Annotation of processmail/processmail.pl, revision 3.3
3.2 boris 1: #!/usr/bin/perl
3.3 ! boris 2: #$Id: processmail.pl,v 3.2 2013-10-11 15:39:35 boris Exp $
2.1 boris 3: #
4: #
5: # Исходные файлы и параметры
6: #
7:
8: use Getopt::Std;
9:
3.3 ! boris 10: $usage = 'processmail.pl $Revision: 3.2 $, $Date: 2013-10-11 15:39:35 $'. "\n".
2.3 boris 11: "Usage: processmail.pl [-d] [-t table_file] [-o results] \n";
2.1 boris 12:
13: require 'parameters.pl';
14: require 'subroutines.pl';
15:
2.3 boris 16: die $usage unless getopts('t:o:d');
2.1 boris 17:
18: $DEBUG=$opt_d;
19:
3.3 ! boris 20: # Находим максимальный и минимальный вопрос и слегка подстраховываемся.
! 21: $MINQUEST=1e99;
! 22: $MAXQUEST=-1;
! 23: for (my $r=1; $r<=$ROUNDS; $r++) {
! 24: if ($MINQUEST>$MINQUEST[$r]) {
! 25: $MINQUEST=$MINQUEST[$r];
! 26: }
! 27: if ($MAXQUEST<$MAXQUEST[$r]) {
! 28: $MAXQUEST=$MAXQUEST[$r];
! 29: }
! 30: }
! 31: if ($MINQUEST < 0 || $MAXQUEST < 0) {
! 32: die "Отрицательные номера вопросов не поддерживаются!\n";
! 33: }
! 34:
2.1 boris 35:
36: my %teams;
37: my @answers;
38: #
39: # Читаем старые результаты
40: #
41: if ($opt_t)
42: {
43: die "Cannot open $opt_t\n" unless open(INFILE,$opt_t);
44: readhash(\@answers);
45: close(INFILE);
46: }
47:
48: #
2.3 boris 49: # Читаем ответы команд для ВСЕХ зачётов
2.1 boris 50: #
3.3 ! boris 51: for (my $r=1; $r<=$ROUNDS; $r++) {
! 52: foreach my $file ( @{$FILES[$r]} ) {
2.3 boris 53: open (INFILE, $file);
54: readmail(\%teams);
55: collect_answers(\%teams,\@answers);
56: close (INFILE);
57: }
2.1 boris 58: }
2.3 boris 59:
2.1 boris 60: #
61: # Пишем измененную таблицу в файл.
62: #
63: if ($opt_o)
64: {
65: die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o");
66: select OUTFILE;
67: }
3.3 ! boris 68: for ($i=$MINQUEST;$i<=$MAXQUEST;$i++)
2.1 boris 69: {
70: foreach $symbol ('+','-','?')
71: {
72: dumphash(\%teams,\@answers,$i,$symbol);
73: }
74: }
75: print "***\n";
76:
3.1 boris 77: #
78: # На всякий случай проверяем на наличие команд с дублирующимися номерами.
79: #
80: check_dup_numbers(\%teams);
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>