#!/usr/bin/perl use strict; use warnings; my $dbfile = "learnIT.db"; open(my $dbh, "<",$dbfile) or die $!; my @db = <$dbh>; close $dbh; my $good = 0; my $bad = 0; my $count = 0; my $length = $#db + 1; print $db[int rand($#db)]; sub clear { my $sleeptime = shift; sleep("$sleeptime"); system("clear"); print("##############################\n## LearnIT by Florian L ##\n## ##\n## type 'exit' to quit... ##\n## ##\n### ###########################\n"); } #clear(0); sub getrand { my $random = int(rand(3)); return $random; } foreach (@db) { my (undef,$question_nr,$question, $answer_a, $answer_b, $answer_c, $answer_d) = split(/\.:\./, $_); my $randnum = getrand(); $count++; if ($randnum == 0) { print("\n$question_nr $question\n------------------------------\n"); print("a) $answer_a\nb) $answer_b\nc) $answer_c\nd) $answer_d\n"); TYPEA: print("\nAntwort: "); chomp(my $answer = ); if ($answer eq 'd') { print("\n-Korrekt-\n"); $good++; clear(2); } elsif ($answer eq 'exit') { print("Von $count Fragen wurden $good richtig beantwortet, es wurden dabei $bad falsche Antworten gegeben.\n"); exit; } else { print("Leider falsch, try again...\n"); $bad++; goto TYPEA; } } elsif ($randnum == 1) { print("\n$question_nr $question\n------------------------------\n"); print("a) $answer_b\nb) $answer_c\nc) $answer_d\nd) $answer_a\n"); TYPEB: print("\nAntwort: "); chomp(my $answer = ); if ($answer eq 'c') { print("\n-Korrekt-\n"); $good++; clear(2); } elsif ($answer eq 'exit') { print("Von $count Fragen wurden $good richtig beantwortet, es wurden dabei $bad falsche Antworten gegeben.\n"); exit; } else { print("Leider falsch, try again...\n"); $bad++; goto TYPEB; } } elsif ($randnum == 2) { print("\n$question_nr $question\n------------------------------\n"); print("a) $answer_c\nb) $answer_d\nc) $answer_a\nd) $answer_b\n"); TYPEC: print("\nAntwort: "); chomp(my $answer = ); if ($answer eq 'b') { print("\n-Korrekt-\n"); $good++; clear(2); } elsif ($answer eq 'exit') { print("Von $count Fragen wurden $good richtig beantwortet, es wurden dabei $bad falsche Antworten gegeben.\n"); exit; } else { print("Leider falsch, try again...\n"); $bad++; goto TYPEC; } } elsif ($randnum == 3) { print("\n$question_nr $question\n------------------------------\n"); print("a) $answer_d\nb) $answer_a\nc) $answer_b\nd) $answer_c\n"); TYPED: print("\nAntwort: "); chomp(my $answer = ); if ($answer eq 'a') { print("\n-Korrekt-\n"); $good++; clear(2); } elsif ($answer eq 'exit') { print("Von $count Fragen wurden $good richtig beantwortet, es wurden dabei $bad falsche Antworten gegeben.\n"); exit; } else { print("Leider falsch, try again...\n"); $bad++; goto TYPED; } } } print("\nVon $count Fragen wurden $good richtig beantwortet,\nes wurden dabei $bad falsche Antworten gegeben.\n");