Guest User

Untitled

a guest
Dec 8th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.20 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use POSIX;
  7.  
  8. #init stuff
  9.  
  10. my @questions;
  11. my @answers;
  12. my @used;
  13.  
  14. my $max = 5 || @questions;
  15. my $score = 0;
  16. my $filename = "questions.txt";
  17.  
  18. open(my $file, "<", $filename) or die "cannot open $filename for reading: $!\n";
  19. while(<$file>) {
  20.     my ($question, $answer) = split(/;\s/);
  21.     push(@questions, $question);
  22.     push(@answers, $answer);
  23. }
  24. close($file);
  25.  
  26. quiz_and_stuff();
  27.  
  28. sub get_question {
  29.     my $num = floor(rand(@questions));
  30.     my @tmp;
  31.     while (grep {/$num/} @used) {
  32.         $num = floor(rand(@questions));
  33.     }
  34.     push(@used, $num);
  35.     return ($questions[$num], $answers[$num]);
  36. }
  37.  
  38. sub quiz_and_stuff {
  39.     while(@used != $max) {
  40.         my ($question, $answer) = get_question();
  41.         print ($question, "\n");
  42.         my $input = <>;
  43.         chomp $input;
  44.         if($answer =~ /^$input$/i) {
  45.             $score++;
  46.             print "Correct!" . (@used == $max ? "End of quiz!\n\n" : " Next question!\n\n");
  47.         }
  48.         else {
  49.             print "Nope!" . (@used == $max ? "End of quiz!\n\n" : " Next question!\n\n");
  50.         }
  51.     }
  52.  
  53.     print "Your score: $score/$max - " . ($score/$max)*100 . "%\n";
  54. }
Add Comment
Please, Sign In to add comment