#!/usr/bin/perl #文字列の受けとりと展開。 $\ = "\n"; print "Content-type: text/html"; print ""; @arg = split /&/ ,$ENV{QUERY_STRING}; foreach (@arg){ ($ind,$val) = split /=/ ; $hash{$ind} = $val; } #ID の発行。 if( $hash{ID} eq "" ){ $hash{ID} = time; } $ID = $hash{ID}; $page = $hash{page}; $key = $hash{0}; #解答の読みと答合わせ。 open KEY, $key; while(){ chop; ($arg,$val,$point) = split /,/; $keys{$arg} = $val; $points{$arg} = $point; } close KEY; $gain = 0; foreach (keys %hash){ if( $hash{$_} eq $keys{$_}){ $gain = $gain + $points{$_}; } } #累積得点の読みと出力。 $score = 0; $score = $score + $gain + $hash{SC}; #ヘッダの読みと出力。 open PRE, $key.".pre"; $log = ""; while(
){
    $log = $log.$_ ;
}
print $log;
close PRE;

print '' ;
print '' ;
print '
'; if( $gain == 0 ){ print '残念でした〜。は・ず・れ(^\'^)'; }else{ print 'おお当り〜!(^^)!'; } print '
得点= ',$gain,'
総得点= ',$score,'
'; #print %hash; # 解説の読みと出力 open COMM, $key.".comment".$page; $log = ""; while(){ $log = $log.$_ ; } print $log; close COMM; print '

'; #コンテンツの読みと出力。 open CON, $key.'.cont'.$page; $log = ""; while(){ $log = $log.$_ ; } print $log; close CON; # 最終ページの処理 if( $page == -1 ){ #まずは、得点の記録と読みこみ open LOG, '>>'.$key.'.log'; $date = localtime; print LOG $score.' '.$date; close LOG; open LOG, $key.'.log'; @log = ""; $i = 0; while(){ chop; ($arg,$val) = split / /,$_,2; @log = (@log ,$arg); $i++; }; close LOG; # 平均点を出す。 $total = 0; while(<@log>){ $total = $total + $_; }; $ave = sprintf("%.1f",($total/$i)); #標準偏差を出して $sigma = 0; while(<@log>){ $sigma = $sigma + ($_ - $ave)**2; }; $hhs = sprintf("%.1f",sqrt( $sigma / $i )); print '

-------スコア--------------
'; print '
総得点= ',$score; print '
平均点= ',$ave; $hst = sprintf("%.1f",($score - $ave)*10/$hhs+50) ; print '
標準偏差= ',$hhs; print '
偏差値= ',$hst; open EPI, $key.".epi2"; $log = ""; while(){ $log = $log.$_ ; }; print $log; close EPI; }else{ #フッタの読みと出力。 open EPI, $key.".epi"; $log = ""; while(){ $log = $log.$_ ; }; print $log; close EPI; };