Hello, (revised to include entire program, input file, and output) I've written a simple quiz program and I've run into a problem with rand and the integer it returns. It seems that it will eventually choose either 0 or n+1 (I'm guessing) which blows up my array. I want to make sure it chooses from the entire pool of questions. ie. Don't skip the first and last array item. What suggestions can anyone give me?
Thanks- Jeff Borders (perl newbie) ### Sample Input File: korean.txt ### One = Hana First = Il Two = Dool Second = Yi Three = Set Third = Sahm Four = Net Fourth = Sa ### Sample Output ### Question 20: Olgul Dwi Chaki 1. Back pivot kick to the up 2. Ridgehand 3. Roundhouse kick to the middle 4. Leg press q to quit Enter your answer: 1 Question 21: Son Use of uninitialized value in concatenation (.) or string at ./korean.pl line 58, <STDIN> line 21. 1. 2. Master Instructor 3. Middle section 4. Hand press q to quit Enter your answer: ### korean.pl ### #!/usr/bin/perl use warnings; use strict; my $number_of_questions=0; my $random_question=0; my $random_order=0; my $i=0; my $response=0; my $total=0; my $incorrect=0; my $percent=0; my @answer; my @question; my $answer=0; my $question=0; open DICT, '<', 'korean.txt' or die "Cannot open 'korean.txt' $!"; while (<DICT>) { chomp; $number_of_questions++; ($answer, $question) = split /\s*=\s*/; $answer[$number_of_questions] = $answer; $question[$number_of_questions] = $question; } close DICT; open ERRFILE, '>', 'errfile.txt' or die "Cannot open 'errfile.txt' $!"; sub check_vars { print ERRFILE "Question Number: $number_of_questions\n"; print ERRFILE "Number of Questions: $number_of_questions\n"; print ERRFILE "Random Question: $random_question\n"; print ERRFILE "Random Order: $random_order\n"; print ERRFILE "i: $i\n"; print ERRFILE "Response: $response\n"; print ERRFILE "Total: $total\n"; print ERRFILE "Incorrect: $incorrect\n"; print ERRFILE "Percent: $percent\n"; print ERRFILE "Answer: $answer\n"; print ERRFILE "Question: $question\n"; } do { $total++; $random_question = int(rand($number_of_questions)); $random_order = int(rand(4)); #returns an integer from 0-3. $random_order++; #increment to get 1-4. print "\n\nQuestion $total: "; print "$question[$random_question]\n\n"; for $i (1..4) { if ($i == $random_order) { print "$i. $answer[$random_question]\n"; #print correct value from array. } else { print "$i. $answer[int(rand($number_of_questions))]\n"; #print incorrect value from array. } &check_vars(); } print "\npress q to quit\n"; print "Enter your answer: "; chomp($response=<STDIN>); if ($response eq 'q') { print "\n"; $total--; #if ($total = 0) { abort; } } elsif ($response != $random_order) { print "-----> Answer is $random_order <-----\n"; $incorrect++; } #print correct value from array. } until ($response eq 'q'); $percent=eval (($total-$incorrect)/$total)*100; printf "Out of %2d questions, you missed %2d for a grade of %3d%%\n", $total,$incorrect,$percent; print "Total number of questions is $number_of_questions\n"; close(ERRFILE) || die "Couldn't close file properly"; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>