#!perl $temp=$ENV{'QUERY_STRING'}; @pairs=split(/&/,$temp); foreach $item(@pairs) { ($key,$content)=split (/=/,$item,2); $content=~tr/+/ /; $content=~ s/%(..)/pack("c",hex($1))/ge; $fields{$key}=$content; } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $user = $fields{'name'}; if ($user) { &PrintResponsePage; &WriteOut; } else { &NoName; } # subroutines sub PrintResponsePage { print <Music 190W Chapter 15 Quiz Response

Music 190W Chapter 15 Quiz Results

Hi there, $fields{'name'}, whose e-mail address is <$fields{'email'}>.

ENDPRINT $q = 0; # number of questions answered correctly $t = 20; # total number of questions $score = 0; # score on the test to be converted into percent $x = 1; # the question number $a = 0; # the answer number # be sure to update answer key for each new week @ans = ("a","d","b","c","b","b","c","d","a","c","c","c","b","c","b","a","c","c","c","c"); while ($x != 21) { if ($fields{$x} eq @ans[$a]) { print "Question $x is correct.

\n"; ++$q; } else { print "Question $x is incorrect.

\n"; } ++$x; ++$a; } $score = $q / $t; $score = int $score * 100; print "Your score on this quiz is $score%.\n"; if ($score != 100) { print <Please review the questions you missed and try this quiz again in order to reach the writing assignment prompts.

Use Netscape's Back button to return to your quiz.

E-mail Prof. Murphy if you have questions

ENDPRINT } else { print < There is no essay for week 15. The only remaining writing assignment is concert report 3, which is due at the final exam.

E-mail Prof. Murphy if you have questions

ENDPRINT } print "\n"; } sub NoName { print <No Name Entered

You can take the quiz as many times as you like.

I do ask, however, that you enter your name at the top of the quiz form.

Netscape's Back button will return you to your quiz.

Prof. Murphy

ENDPRINT print "\n"; } sub WriteOut { $when = localtime(time); open(OUTFILE, ">>$fields{'name'}.wk15log") || die "Sorry, I couldn't open that file for writing\n"; print OUTFILE "$fields{'name'}, whose SSN is $fields{'ssn'}, has taken the chapter 15 quiz at $when.\n"; &PrintOutResponse; close(OUTFILE); open(REPORTFILE,">>quiz15log.txt") || die "Sorry, I couldn't open the log file.\n"; print REPORTFILE "$fields{'name'} | $score% | $when | $ENV{'HTTP_USER_AGENT'}\n"; close REPORTFILE; } sub PrintOutResponse { $q = 0; # number of questions answered correctly $t = 20; # total number of questions $score = 0; # score on the test to be converted into percent $x = 1; # the question number $a = 0; # the answer number @ans = ("a","d","b","c","b","b","c","d","a","c","c","c","b","c","b","a","c","c","c","c"); while ($x != 21) { if ($fields{$x} eq @ans[$a]) { print OUTFILE "Question $x is correct.\n"; ++$q; } else { print OUTFILE "Question $x is incorrect.\n"; } ++$x; ++$a; } $score = $q / $t; $score = int $score * 100; print OUTFILE "The score on this quiz is $score%.\n\n"; }