#!/usr/bin/perl ## openの文字列をチェックすることにしました。平成15年4月28日(月) #変数の初期化 $\ = "\n"; #ヘッダを出力。 print < 解答・解説 EOF #答案をとりこむ。 #CGIへの入力は $ENV{QUERY_STRING} でうけとる。 @argv = split /&/, $ENV{QUERY_STRING}; foreach ( @argv ){ ($arg,$val) = split /=/; $ans{$arg} = $val ; } print '
'; #解答と配点をkeyNからとりこむ。 #OPENのおまじない。 $ans{0} =~ /(\w+)/; $ans{0} = $1; open(KEY,"$ans{0}"); while(){ chop; split /,/; $keys{$_[0]}=$_[1]; $points{$_[0]}=$_[2]; } close(KEY); #----- For Debug ---------- #print %keys; #print %points; #-------------------------- #こたえあわせ @kakumon = "1"; $gain = 0; for( $i=1 ; $i<100 ; $i++ ){ if( $keys{$i} eq ""){ print "That is all."; last; } elsif( $ans{$i} eq $keys{$i} ){ print '問題',$i,' 答案=',$ans{$i},' 正解=',$keys{$i},' おお当り ',' ',$points{$i},'点ゲット!
'; $gain += $points{$i}; @kakumon = (@kakumon , 1); } else{ print '問題',$i,' 答案=',$ans{$i},' 正解=',$keys{$i},' ハズレ〜 ','
'; @kakumon = (@kakumon , 0); } } print '
'; print ''; print '総得点= ',$gain; print '
'; #記録をとる。 $, = " "; # #OPENのおまじない。 $ans{0} =~ /(\w+)/; $ans{0} = $1; $logfile = "$ans{0}.log"; open(LOG,'>>'.$logfile); $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994" # print '日付= ',$now_string; #ふぉーでばぐ。 print '
'; print LOG $gain," ",@kakumon," ",$now_string; close(LOG); $, = ""; # 記録を読んで。 open(LOG,$logfile); while(){ split( / /,$_,2); @result = (@result,$_[0]); } close(LOG); #------------------ #print @result; #------------------ # 平均点を計算。 $total = 0; $j = 0; foreach( @result ){ $total = ( $total + $_ ); $j++ ; } $ave = sprintf( "%.1f", $total / $j ); print "平均点= ",$ave; print '
'; # 標準偏差の計算。 $sigma = 0; foreach( @result ){ $sigma = ( $sigma + (( $_ - $ave )**2) ); } $std = sprintf( "%.1f", sqrt( $sigma / $j )); print '標準偏差= ',$std; print '
'; # 偏差値の計算。 $hst = sprintf("%.1f",( $gain - $ave ) * 10 / $std + 50 ); print '偏差値= ',$hst ; print '
'; print '
'; # 採点講評 print '
'; if( $hst >= 60 ){ print 'おみごと!'; } elsif( $hst >= 40 ){ print 'ま、並ですな。'; } else{ print 'ガンバロウ。'; } print '
'; print '
'; # 解説の表示。 print "〈解説〉"; print '
'; #print '
'; #print '
';

$\ = "";
$commentfile = "$ans{0}.comment";
open(COM,$commentfile);
while(){
    print $_ ;
}
close(COM);
#print '
'; #print '
'; #print '
'; $\ = "\n"; print ""; print < EOF2