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>


Reply via email to