#! /usr/bin/perl -w use strict; usage () if !@ARGV; (print "$ARGV[0]: chdir: $!\n"), usage () if !chdir ($ARGV[0]); sub usage { print <) { last if /^\s*$/; my ($student) = /\(([[:alnum:]]+)\@stanford.edu\)/ or next; push (@students, $student); } close (GRADE); print "warning: no students in group $group\n" if @students == 0; print "warning: ", scalar (@students), " students in group $group\n" if @students > 3; @students = sort @students; for (my $i = 0; $i <= $#students; ) { push (@{$stu2grp{$students[$i]}}, $group); my $j; for ($j = $i + 1; $j <= $#students; $j++) { last if $students[$i] ne $students[$j]; } my ($reps) = $j - $i; print "warning: $students[$i] appears $reps times in group $group\n" if $reps > 1; $i = $j; } print "warning: no student named $group in group $group\n" if !grep ($_ eq $group, @students); $group_cnt++; } for my $student (keys %stu2grp) { my (@groups) = @{$stu2grp{$student}}; next if @groups == 1; print "warning: $student appears in groups ", join (', ', @groups), "\n"; } print "Scanned ", scalar (keys (%stu2grp)), " unique students in $group_cnt groups.\n";