59 lines
1.0 KiB
Perl
59 lines
1.0 KiB
Perl
#! /usr/bin/env perl
|
|
|
|
use v5.10.1;
|
|
use strict;
|
|
use warnings;
|
|
use Getopt::Long;
|
|
use Pod::Usage;
|
|
|
|
BEGIN {
|
|
push @INC, "../common";
|
|
}
|
|
use Grading;
|
|
use Trace;
|
|
|
|
# Parse arguments
|
|
our $debug;
|
|
my $input; my $format;
|
|
my $help; my $man;
|
|
GetOptions ("help|h|?" => \$help,
|
|
"man" => \$man,
|
|
"format|F" => \$format,
|
|
"debug|d" => \$debug,
|
|
"" => \$input)
|
|
or pod2usage(2);
|
|
pod2usage(1) if $help;
|
|
pod2usage(-exitval => 0, -verbose => 2) if $man;
|
|
|
|
|
|
my $xmlgrading;
|
|
if ($#ARGV == -1) {
|
|
pod2usage(1);
|
|
}
|
|
else {
|
|
open $xmlgrading, "<", shift or die $!;
|
|
}
|
|
|
|
binmode $xmlgrading;
|
|
my $grade = Grading->new($xmlgrading);
|
|
close $xmlgrading;
|
|
|
|
|
|
do {
|
|
my $xmltrace;
|
|
if (defined $input || $#ARGV == -1) {
|
|
$xmltrace = *STDIN;
|
|
}
|
|
else {
|
|
open $xmltrace, "<", shift or die $!;
|
|
}
|
|
|
|
binmode $xmltrace;
|
|
my $trace = Trace->new($xmltrace);
|
|
close $xmltrace unless $xmltrace eq *STDIN;
|
|
|
|
$grade->fill($trace->getIds);
|
|
|
|
say $trace->getFirstWho().",".$grade->compute();
|
|
} while ($#ARGV >= 0);
|