That's correct. I'm not using POST, GET, or COOKIE. I haven't thought about it being multi-user. It's really just for me and maybe a few others. Please understand, I'm a newbie. If there is a better way, and I'm sure there is, enlighten me. I'll try it if my skills permit. -jb
On Thu, 2005-03-31 at 12:55 -0800, toolscripts wrote: > Sorry if I'm not totally clear on this myself, but are you saying you are > trying to use it without POST, GET or COOKIE usage? The solution might be to > use a file named based on the user's ip. > > --t > > > ----- Original Message ----- > From: "Jeff Borders" <[EMAIL PROTECTED]> > To: <beginners@perl.org> > Sent: Thursday, March 31, 2005 12:39 PM > Subject: New to CGI.pm > > > > I've written a perl program to quiz myself using a simple text file as > > input. > > > > Input file: > > > > answer = question > > answer = question > > etc... > > > > When I try to convert this program to a cgi program to use from a web > > browser, it will not pass the parameters back to the program after > > drawing the page. I've tried saving the parameter to a variable. I > > even tried pulling it from the param array, which it appears in. > > > > The program starts and presents a menu of test chapters, then after user > > selection, it exits the program as if I finished the exam. > > > > Could someone give me some guidance? > > > > Thank you, > > > > Jeff Borders > > > > http://www.jeffborders.com/cgi-bin/korean-cgi.pl > > > > Listing below: > > > > ************************************************ > > > > #!/usr/bin/perl > > > > use warnings; > > use CGI qw/-debug :standard/; > > use CGI::Carp qw(fatalsToBrowser); > > use CGI::Pretty qw(:html3); > > > > print header, > > start_html('Korean Terminology'), > > h1('Korean Terminology'), > > start_form, > > p,hr,p; > > > > foreach $name ( param() ) { > > $value = param($name); > > print "The value of $name is $value\n" > > } > > > > $test=param('test'); > > > > if (param()) { > > if ($test eq "9th Gup") { $test="9gup.txt"; } > > elsif ($test eq "8th Gup") { $test="8gup.txt"; } > > elsif ($test eq "7th Gup") { $test="7gup.txt"; } > > elsif ($test eq "6th Gup") { $test="6gup.txt"; } > > elsif ($test eq "5th Gup") { $test="5gup.txt"; } > > elsif ($test eq "4th Gup") { $test="4gup.txt"; } > > elsif ($test eq "3rd Gup") { $test="3gup.txt"; } > > elsif ($test eq "2nd Gup") { $test="2gup.txt"; } > > elsif ($test eq "1st Gup") { $test="1gup.txt"; } > > elsif ($test eq "1st Dan") { $test="1dan.txt"; } > > else { print "no such test name"; } > > > > &main_section(); > > > > } > > else { > > print h2('Choose test:'); > > &choose_test(); > > &process_test(); > > } > > > > > > print p,hr,p; > > print end_form, end_html; > > > > > > sub choose_test > > { > > print radio_group(-name=>'test', -value=>['9th Gup','8th Gup','7th > > Gup','6th Gup','5th Gup','4th Gup','3rd Gup','2nd Gup','1st Gup','1st > > Dan'], -cols=>4); > > print p; > > print submit(-name=>'test',-label=>'Enter'), > > reset(-name=>'reset',-label=>'Cancel'); > > print p; > > $test=param('test'); > > return $test; > > } > > > > sub process_test > > { > > print p; > > print "test = $test"; > > print p; > > print param('test'); > > $number_of_questions=0; > > open (DICT, $test) || die "Cannot open '$test' $!"; > > while (<DICT>) { > > chomp; > > $number_of_questions++; > > ($answer, $question) = split /\s*=\s*/; > > $answer[$number_of_questions] = $answer; > > $question[$number_of_questions] = $question; > > } > > close DICT; > > print p; > > print "number_of_questions = $number_of_questions\n"; > > return $number_of_questions; > > } > > > > sub main_section > > { > > $total=0; > > $total++; > > while ($total <= $number_of_questions || $response eq 'Cancel') > > # || $total > $number_of_questions) > > { > > &pick_question(); > > &pick_order(); > > &print_question(); > > &get_response(); > > } > > &print_result(); > > print p; print "\ntotal number of questions = $number_of_questions\n"; > > print p; print "\ntotal = $total\n"; > > > > } > > > > sub pick_question > > { #Pick a unique question from list > > do { > > $random_question = 1 + int(rand($number_of_questions)); > > } while ( grep (/$random_question/, @answered) ); > > push @answered, $random_question; > > return $random_question; > > } > > > > sub pick_order > > { #Pick which position to insert the correct answer. > > $random_order = 1 + int(rand(4)); #returns an integer from (0..3) + 1. > > return $random_order; > > } > > > > sub print_question > > { > > print start_form, > > "Question number $total of $number_of_questions",hr,p,"$question > > [$random_question]",p; #Print the question. > > my @temp_answers; > > my $temp_answer; > > push @temp_answers, $random_question; #This keeps the answer from > > showing up twice on the same question. > > for my $i (1..4) #Print the possible answers. > > { > > if ($i == $random_order) > > { > > #print correct value from array. > > push @temp_answers, $answer[$random_question]; > > } > > else > > { > > ### Make sure that bogus answer does not equal answer or other 2 > > bogus answers ### > > do > > { > > $temp_answer = 1 + int(rand($number_of_questions)); > > } while ( grep (/$temp_answer/, @temp_answers) ); > > #print incorrect value from array. > > push @temp_answers, $answer[$temp_answer]; > > } > > } > > print radio_group(-name=>'answer', -value=>[EMAIL PROTECTED], -cols=>1); > > $answers=param('answer'); > > print p; > > print submit(-name=>'answer',-label=>'Enter'), > > reset(-name=>'reset',-label=>'Cancel'); > > print p; > > print end_form; > > } > > > > sub get_response > > { > > $response=param('answer'); > > if ($response eq 'Cancel') > > { > > print p; > > $total--; > > } > > elsif ($response != $random_order) > > { #print correct value from array. > > print "-----> $question[$random_question] is $answer > > [$random_question] <-----"; > > print p; > > $incorrect++; > > } > > return $response; > > return $incorrect; > > } > > > > sub print_result > > { > > print p,hr,p; > > if ($total == 0) { > > print "No questions answered."; > > } > > else > > { > > my $percent=eval (($total-$incorrect)/$total)*100; > > printf "Out of %2d questions, you missed %2d for a grade of %3d%%", > > $total, $incorrect, $percent; > > print p; > > print "You answered $total questions"; > > } > > } > > > > > > > > > > > > > > > > -- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > > > > > > > > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>