]> git.donarmstrong.com Git - bin.git/commitdiff
add gb munger
authorDon Armstrong <don@donarmstrong.com>
Tue, 19 Dec 2006 21:15:11 +0000 (21:15 +0000)
committerDon Armstrong <don@donarmstrong.com>
Tue, 19 Dec 2006 21:15:11 +0000 (21:15 +0000)
gb_munger.pl [new file with mode: 0755]

diff --git a/gb_munger.pl b/gb_munger.pl
new file mode 100755 (executable)
index 0000000..1d8aa26
--- /dev/null
@@ -0,0 +1,109 @@
+#! /usr/bin/perl
+# , and is released
+# under the terms of the GPL version 2, or any later version, at your
+# option. See the file README and COPYING for more information.
+# Copyright 2006 by Don Armstrong <don@donarmstrong.com>.
+# $Id: perl_script 495 2006-08-10 08:02:01Z don $
+
+
+use warnings;
+use strict;
+
+use Getopt::Long;
+use Pod::Usage;
+
+=head1 NAME
+
+ - 
+
+=head1 SYNOPSIS
+
+ [options]
+
+ Options:
+  --debug, -d debugging level (Default 0)
+  --help, -h display this help
+  --man, -m display manual
+
+=head1 OPTIONS
+
+=over
+
+=item B<--debug, -d>
+
+Debug verbosity. (Default 0)
+
+=item B<--help, -h>
+
+Display brief useage information.
+
+=item B<--man, -m>
+
+Display this manual.
+
+=back
+
+=head1 EXAMPLES
+
+
+=cut
+
+
+use vars qw($DEBUG);
+use IO::File;
+
+my %options = (debug           => 0,
+              help            => 0,
+              man             => 0,
+              multiplier      => 1,
+              add             => 0,
+             );
+
+GetOptions(\%options,'debug|d+','help|h|?','man|m',
+          'gradebook=s','ilearn_gradebook|ilearn-gradebook=s',
+          'gradebook_column|gb-col=s','ilearn_column|il-col=s','multiplier|mul=s',
+          'add|addition=s',
+         );
+
+pod2usage() if $options{help};
+pod2usage({verbose=>2}) if $options{man};
+
+$DEBUG = $options{debug};
+
+# read in the gradebook
+
+my $gb = new IO::File $options{gradebook},'r' or
+     die "Unable to open $options{gradebook} for reading: $!";
+
+my %gb_students;
+while (<$gb>) {
+     chomp;
+     next unless /^\d+/;
+     my ($num,$name,$id,@columns) = split /\t/;
+     next unless defined $name;
+     $id =~ s/[^\d]+//g;
+     die "No student id for $name at line $." if not length $id;
+     $gb_students{$id} = {name => $name,
+                         score => (defined $columns[$options{gradebook_column}] and length $columns[$options{gradebook_column}])?
+                             $columns[$options{gradebook_column}]*$options{multiplier}+$options{add}:$columns[$options{gradebook_column}],
+                        };
+}
+
+my $il = new IO::File $options{ilearn_gradebook},'r' or
+     die "Unable to open $options{ilearn_gradebook} for reading: $!";
+
+while (<$il>) {
+     chomp;
+     my ($name,@columns) = split /\t/;
+     my ($id) = $name =~ /\|\s+(\d+)/;
+     print $_,qq(\n) and next if not defined $id;
+     next if not exists $gb_students{$id};
+     $columns[$options{ilearn_column}] = $gb_students{$id}{score} if
+       defined $gb_students{$id}{score} and length $gb_students{$id}{score};
+     print join("\t",$name,@columns),qq(\n);
+}
+
+
+
+
+__END__