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