ランダムに1行読込み フォーム文字との同異を 判定するには?
txt ファイル から ランダムに 1行読み込んで
それが フォームの入力文字と同じかを 判定し、
同じならば、次のファイルへ飛ぶ には、
どうしたらよいのでしょうか? お教えください。
------------------------------------------------------
mondai.txt に 問題を 1行に 1題ずつ
kotae.txt に 解答を 1行に ひとつずつ
書きました。
mondai.txt の 1行目の 解答が kotae.txt の 1行目
(2行目-10行目、同じ)としました。
001.cgi で 正解すれば 002.cgi を開く
不正解なら もう一度 001.cgi を実行。
問題は ランダムに 表示する。
まず、mondai.txt と kotae.txt を それぞれ 10行にして
やってみました。
------------------------------------------------------
すると、問題は ランダムに表示されました。
しかし、
#####################################################
if (param('answer') eq ("$ans")){
print "Location:$num2.cgi\n\n";
・・・
{
#####################################################
が、うまくいきません。
↓こうしてあります。どうしたら、よいでしょうか?
↓解答したことを file.txt に記録しよう、ともしています。
↓
################ はじめ ##############################
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI qw(-debug :standard);
my
($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon = sprintf("%02d", $mon + 1);
$day = sprintf("%02d", $day);
$hour = sprintf("%02d", $hour);
$min = sprintf("%02d", $min);
$sec = sprintf("%02d", $sec);
my $num = ('1267');
my $num2 = $num + 1;
my $value = param('answer');
open(FILE, "../../mondai.txt");
my @data2 = <FILE>;
close(FILE);
open(FILE, "../../kotae.txt");
my @data3 = <FILE>;
close(FILE);
my $i = int(rand(10));
my $ans = $data3[$i];
if (param('answer') eq ("$ans")){
print "Location:$num2.cgi\n\n";
open(FILE, '<+file.txt') or die "$!";
my
@DATA = <FILE>;
close(FILE);
open(FILE, '>file.txt') or die "$!";
print FILE ("$num,$ans,$year年$mon月$day日 $hour時$min分$sec秒\n");
print FILE (@DATA);
close(FILE);
}
else {
print header(-charset => 'Shift_JIS');
print start_html("$num.cgi");
print ('<font face="century">');
print $data2[$i]; #####---問題表示
print br;
print startform(
-method => 'POST',
-action => "$num.cgi"
);
print blockquote(
textfield(
-name => 'answer',
-size => '70',
-id => "next",
-accesskey => '['
)
);
print <<END;
<script type="text/javascript" language="JavaScript">
document.getElementById('next').focus();
</script>
END
print submit(-value => 'Send ( ↑Alt+[ )');
print endform;
}
################ おわり ##############################
よろしく、お願いいたします。
お礼
遅くなりましてすいません。JavaScriptが使えるのですね。無事解決しました。ありがとうございました。