#!/usr/local/bin/perl5 # Assumes that the assignments are in a directory $assignment_N."Assignment" # which is picked up from the file "Assignment_current_data". # use strict; my($compile_line); $compile_line="cc -lm ASSIGNMENT/STUDENT.c "; my($assignment_N, $default_addr_dir, @defaults); my($xxx, @ll,%dirs); ####### BE SURE TO SET THESE VARIABLES TO CORRECT VALUES ########## $default_addr_dir='/afs/nd.edu/user6/taylor/xx/mailer/scripts/'; # my path to address files open(IN,"Assignment_current_data"); @defaults=; close(IN); chomp(@defaults); $assignment_N=$defaults[0]; open(IN,"Directory"); @defaults=; close(IN); chomp(@defaults); for($xxx=0;$xxx<=$#defaults;$xxx++) { @ll=split("\t",$defaults[$xxx]); if($ll[0]!~m/#/) { $dirs{$ll[0]}=$ll[1]; } } #################################################################### my(@students, @zz, $A_dir, $assignment_T, $yy, $tt, @files); my($ff,$hh,$ee,$xx, $out_dir, $err_dir,$COMPILE_LINE); $A_dir="/afs/nd.edu/user6/taylor/Math211/scripts/Assignments/".$assignment_N."Assignment"; $compile_line=~s/ASSIGNMENT/$A_dir/g; $A_dir.="/"; open(IN,$default_addr_dir."/211students"); @students=; close(IN); $out_dir=$A_dir.$dirs{'out'}; $err_dir=$A_dir.$dirs{'err'}; foreach $xx (@students) { chomp($xx); @zz=split("\t",$xx); $zz[0]=~s/'//; if( $#ARGV<0 || $zz[0]=~m/$ARGV[0]/i ) { $tt=$A_dir."/".$zz[0].".c"; $yy=$A_dir.$zz[0].".out"; $ee=$A_dir.$zz[0].".err"; $hh=$zz[0].".o"; if( -f $tt ){ ## may need to adjust this line - 2> is Bourne shell redirect >& is Korn shell redirect $COMPILE_LINE=$compile_line; $COMPILE_LINE=~s/STUDENT/$zz[0]/g; system( $COMPILE_LINE." 2> error" ); ## if( -f "a.out" ) { if( -d $out_dir) {} else {mkdir($out_dir,700);} $yy=$out_dir."/".$zz[0].".out"; system( "mv a.out $yy" ); if( -f "error") {unlink("error");} } elsif( -f "error") { ## move error file to error directory if( -d $err_dir) {} else {mkdir($err_dir,700);} $yy=$err_dir."/".$zz[0].".err"; system( "mv error $yy" ); print"Error - ",$zz[0],"\n"; } if( -f $hh ) {system( "rm $hh" );} elsif( -f "../".$hh ) {system( "rm ../$hh" );} } else { print "?",$zz[0],"\n"; } } }