use strict;
use warnings;
use List::Util 'shuffle';

my $line;                # Eingabezeile
my @list;	             # Fragen und Antworten
my $Datei = 'quiz.dat';  # Die Datei mit -"-
my %score;               # Bewertung

open (FILE, "<", $Datei) || die("Oops: $! \n");

# Fragen und Antworten einlesen
while ($line = <FILE>) 
  {
  chomp($line);
  my ($frage, $antw) = split (":",$line);
  die("Vermurkste Zeile $line\n") unless ($frage && $antw);
  push(@list, 
    {
    question => $frage,
    answer => $antw
    });
  }
close(FILE);

# Alles durchmischen
@list = shuffle(@list);

# Fragen bis alles gelöst wurde
while ($#list >= 0) 
  {
  print "$list[0]->{question}: ";
  $line = <STDIN>;
  chomp($line);
  if ($line eq $list[0]->{answer}) 
    { 
    print "Richtig!\n\n";
    $score{'richtig'}++;
    }
  else
    { 
    print "Falsch, richtig wäre $list[0]->{answer}\n\n"; 
    $score{'falsch'}++;
    }
  shift(@list); # Diese Frage entfernen
  }
print "Fertig, Du hattest $score{'richtig'} richtige ";
print "und $score{'falsch'} falsche Antworten.\n";