Sie sind nicht angemeldet.

Hose

Schüler

  • »Hose« ist männlich
  • »Hose« ist der Autor dieses Themas

Beiträge: 56

Wohnort: Hosenwelt

Beruf: Microsoft-Gegner

  • Nachricht senden

1

20.06.2006, 19:33

[gelöst] Perl Skript geht nicht, brauche Hilfe

Hier, kann mir jemand sagen, warum folgendes PERL Skript meinerseits nicht geht?

Zitat

#!/usr/local/bin/perl
print "Willkommen bei Qa²!\n";
print "Question and Answer lädt Fragen und Antworten aus einer Wordlist und fragt diese ab!\n";
print "by Hosenwelt Entertainment --> www.hosenwelt.com\n";
print "SUPPORT OPEN SOURCE!\n";
print "\nWelche Wordlist öffnen?\n";
$wl=<STDIN>;
open (INFO, $wl);
$ques=<INFO>;
close(INFO);
@quas=split(/:/,$ques);
%quos=@quas;
print "Keys(1) oder Values(2) abfragen?\n";
$dec=<STDIN>;
chomp $dec;
### jetzt geht das richtig schwere los....
if ($dec == 1) {
foreach $key(keys %quos) {
print $key;
print "\nAntwort?\n";
$answ=<STDIN>;
chomp $answ;
$else=$quos{"$answ"}; # hier hab ich schon "$answ", $answ und '$answ' probiert...
if ($answ eq $else) {
print "Richtig!\n";
} else {
print "Falsch!\n Richtig wäre $else\n";
}
}
} else {
print "working on that...";
}


Was mach ich denn falsch?
Ich glaub es liegt irgendwo bei dem $else, aber ich hab schon so gut wie alles probiert...

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

20.06.2006, 22:05

RE: Perl Skript geht nicht, brauche Hilfe

was soll das script bewirken?
es wird nach auswahl ein file geöffnet eine zeile gelesen, gesplittet und dann.
du scheinst die eine gesplittete zeile in ein hash legen zu wollen, um die antwort zu referenzieren oder was?
was ist denn in den files drin?
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Hose

Schüler

  • »Hose« ist männlich
  • »Hose« ist der Autor dieses Themas

Beiträge: 56

Wohnort: Hosenwelt

Beruf: Microsoft-Gegner

  • Nachricht senden

3

21.06.2006, 15:18

Fragen und Antworten^^
Wenn ich also z.B. eine "wordlist.list" habe in der steht:
"1+2:3:4+5:9"
dann will ich die öffnen und den Fragen lassen nach 1+2. Wenn man dann 3 eingibt, soll der das als richtig ansehen, weils ja als zweites kommt. Tut er bei mir aber nie. Aber er erkennt auch nichts anderes als richtig.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

21.06.2006, 16:49

RE: Perl Skript geht nicht, brauche Hilfe

also

Zitat

Original von Hose
Hier, kann mir jemand sagen, warum folgendes PERL Skript meinerseits nicht geht?

Quellcode

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
#!/usr/local/bin/perl
print "Willkommen bei Qa²!\n";
print "Question and Answer lädt Fragen und Antworten aus einer Wordlist und fragt diese ab!\n";
print "by Hosenwelt Entertainment --> [URL]www.hosenwelt.com\n[/URL]";
print "SUPPORT OPEN SOURCE!\n";
print "\nWelche Wordlist öffnen?\n";
$wl=<STDIN>;
open (INFO, $wl);
# öffenen eines filedescriptors immer abfangen, falls er fehlschlägt!
$ques=<INFO>;
#
# in $ques befindet sich am ende immer noch ein newline!
# also 
chomp $ques;
#
close(INFO);
@quas=split(/:/,$ques);
#
#durch das split wird der string an den doppelpunkten geteilt, am letzten zeichen hängt 
#immer noch das newline, damit kann diese antwort NIE erkannt werden, da die 
#usereingabe dann ein newline enthalten müsste, also oben wie geschrieben ein chomp
#$ques einfügen
#
%quos=@quas;
# das array wird in einen hash geladen, damit entsteht eine referenz
# aufgabe => ergebnis
# aufgabe ist der key , ergebnis der value, der hash ist also über die aufgaben referenziert
# $quos{aufgabe}= ergebnis, das erbegnis ist der inhalt, aufgabe die adresse
#
print "Keys(1) oder Values(2) abfragen?\n";
$dec=<STDIN>;
chomp $dec;
### jetzt geht das richtig schwere los....
if ($dec == 1) {
	foreach $key(keys %quos) {
		print $key;
		print "\nAntwort?\n";
		$answ=<STDIN>;
		chomp $answ;
#		$else=$quos{"$answ"}; # das bringt alles nichts, denn der hash ist nicht über das ergebnis referenziert
#              also hier muss stehen
                $else=$quos{$key}
		if ($answ eq $else) {
			print "Richtig!\n";
		} else {
			print "Falsch!\n Richtig wäre $else\n";
		}
	}
} else {
	print "working on that...";
}


ergänzungen habe ich eingefügt.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Hose

Schüler

  • »Hose« ist männlich
  • »Hose« ist der Autor dieses Themas

Beiträge: 56

Wohnort: Hosenwelt

Beruf: Microsoft-Gegner

  • Nachricht senden

5

21.06.2006, 16:56

VIELEN DANK! :applaus: :+++:

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

22.06.2006, 11:17

gern geschehen!
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Thema bewerten