#!/usr/bin/perl use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); # use strict; use warnings; # use diagnostics; #use vars # qw($fullname $anslength @allselections $file $fname $lname $time $reviewtime $idinput $id $courselocation $useripaddress $questionno @log $clocktime $log $type $value @answers $buttonname %selections @options); my ( @explain, @allanswers, @allquestions, $fullname, $anslength, @allselections, $file, $fname, $lname, $time, $reviewtime, $idinput, $id, $courselocation, $useripaddress, $questionno, @log, $clocktime, $log, $type, $value, @answers, $buttonname, %selections, @options ); # my @allquestions; # my @allanswers; # my @explain; print header; # ********************************* DEFINE VARIABLES $time = param('time'); $reviewtime = param('reviewtime'); $file = param('file'); $idinput = param('idinput'); $fullname = param('fullname'); $fname = param('fname'); $lname = param('lname'); $courselocation = substr( $file, 0, 6 ); $useripaddress = $ENV{REMOTE_ADDR}; $questionno = 0; print ""; print "Exam"; print ""; # ******************* START SUBROUTINE MAKEEXAM sub makeexam() { local $/ = "~\n"; # ** CHANGES INPUT RECORD SEPARATOR TO ~line break # ************************** THIS SECTION CREATES THE HTML FOR THE EXAM. chop($fname); $fname = lc($fname); $lname = lc($lname); $fname = ucfirst($fname); $lname = ucfirst($lname); # ********************************** RECORD ACCESS TO THE EXAM $clocktime = localtime; @log = split( /\//, $file ); @log = split( /\./, $log[1] ); $log = $log[0]; $log = $log . ".log"; open ACCESS, ">>$log" || die "Cannot open $log: $!"; print ACCESS $idinput . " " . $lname . " " . $fname . " " . $clocktime . " " . $useripaddress . " " . $time . "\n"; close(ACCESS); # ********************************** END SCRIPT TO RECORD ACCESS TO THE EXAM print "

Hello $fullname!

"; print start_form ( -name => 'makequiz', -method => 'POST', -action => "http://ist221.nsm.tridenttech.edu/perl/gradequiz.cgi" ); chdir("/perl/web"); open FILE, "$file" || die "Cannot open $file: $!"; while () { # ** READS EACH LINE OF TEXT FROM FILE chomp; # ** BY DEFAULT, CHOMPS OFF $/ FROM EACH LINE ( $type, $value ) = split( /:#\s*/, $_ ); # ***** SPLITS EACH LINE BY TYPE AND CONTENT if ( $type =~ m/i/i ) { # ** CHECKS FOR IMAGE print ""; print "

"; } elsif ( $type =~ m/q/i ) { # ** CHECKS FOR QUESTION LINE & PRINTS QUESTION $questionno++; print "$questionno. $value
"; push( @allquestions, $value ); } elsif ( $type =~ m/a/i ) { # ** CHECKS FOR ANSWER LINE @answers = split( /`\s*/, $value ); $anslength = @answers; # ** LENGTH OF @ANSWERS push( @allanswers, $value ); } elsif ( $type =~ m/s/i ) { # ** CHECKS FOR SELECTION LINE $buttonname = $type . $questionno; push( @allselections, $value ); %selections = split( /`\s*/, $value ); @options = keys(%selections); if ( $anslength > 1 ) { # ** DETERMINES TO USE RADIO OR CHECKBOX print "
"; print checkbox_group( -name => $buttonname, -values => \@options, -linebreak => 'true', -labels => \%selections ); } else { print "
"; print radio_group( -name => $buttonname, -values => \@options, -linebreak => 'true', -labels => \%selections, -default => '-' ); } print "



"; } elsif ( $type =~ m/e/i ) { # ** CHECKS FOR EXPLAINATION LINE push( @explain, $questionno, $value ); } # END ELSIF STATEMENTS } # ** END WHILE STATEMENT close(FILE); print "
"; # ** THIS SECTION SENDS THREE ARRAYS TO THE GRADEQUIZ.CGI print hidden( -name => "answers", -default => \@allanswers ); print hidden( -name => "questions", -default => \@allquestions ); print hidden( -name => "selections", -default => \@allselections ); print hidden( -name => "explain", -default => \@explain ); print hidden( -name => 'fname', -value => $fname ); print hidden( -name => 'lname', -value => $lname ); print hidden( -name => 'reviewtime', -value => $reviewtime ); print hidden( -name => 'file', -value => $file ); print hidden( -name => 'id', -value => $idinput ); print submit ( -value => 'Grade' ); print "
"; print end_form; } # ************************* END SUBROUTINE MAKEEXAM print end_html; makeexam(); print "The last element in the questions array is $#allquestions

";