Leser: 21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#!/usr/bin/perl use strict; use warnings; use List::Util 'shuffle'; print "Bitte geben Sie die Datei an.\n"; my $Datei = <STDIN>; chomp($Datei); open IN_FILE, "$Datei" or die("Could not open $Datei for reading"); my @list; # # Fragen und Antworten einlesen # while (<IN_FILE>) { chomp; my @words = split /\t/; if ($#words != 1) { die("Malformed input $_"); } push(@list, { question => $words[0], answer => $words[1] }); } @list=shuffle(@list); # # Fragen bis alles gelöst wurde # while ($#list > -1) { print "$list[0]->{question}: "; my $answer = <STDIN>; system 'cls'; chomp($answer); if ($answer eq $list[0]->{answer}) { print "Richtig: ", "Die Antwort ist *$list[0]->{answer}*\n\n"; shift(@list); next; } print "Falsch! ", "Die richtige Anwort ist: *$list[0]->{answer}*\n\n"; push(@list, shift(@list)); } print "All done\n"
open my $handle, '<:encoding(UTF-8)', $datei;
my $text_str = decode(utf-8, $handle);
1 2 3 4 5 6 7 8 9 10 11
my $answer = encode(utf8, <STDIN>); $answer = decode(utf8, $answer); system 'cls'; chomp($answer); if ($answer eq $list[0]->{answer}) { print "Richtig: ", "Die Antwort ist *$list[0]->{answer}*\n\n"; shift(@list); next; }
2009-04-06T06:55:51 VermillionDa meine Konsole anscheinend die Zeichenkodierung nicht akzeptiert muss ich wohl auf die längere Antwort zurückgreifen =)
weil notepad und wordpad meines wissens Dateien immer in utf8 speichern sollte ich die Dateien wohl Problemlos hiermit auslesen können:
Code (perl): (dl )open my $handle, '<:encoding(UTF-8)', $datei;
QuoteWenn ich das richtig verstanden habe müsste ich dann bevor ich wieder mit den Strings arbeite (z.B. splitten) alles wieder dekodieren.
Code (perl): (dl )my $text_str = decode(utf-8, $handle);
QuoteAnschliessend müsste ich die Benutzereingabe als utf8 kodieren. Und dann anschliessend gleich wieder dekodieren damit ich Sie mit den ausgelesenen Strings vergleichen kann. würde das so gehen? Oder habe ich etwas falsch verstanden?