Thread Anfängerfrage Zeichenkettenvergleich (15 answers)
Opened by Gast at 2007-06-17 15:26

pktm
 2007-06-17 15:47
#77581 #77581
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

use strict; und use warnings; würden dich auf das Problem ausmerksam machen:
Du verwendest $_ außerhalb der foreach-Schleife, wo du es aber mit den Passwörtern belegst.
Nach der Schleife hat $_ keinen Wert mehr, entsprechend kommst du auch nciht in deine Kontrollstruktur rein.

Du musst dir merken, ob das Passwort gültig war. Ich verwende dafür gerne eine Variable die ich mir vorher ddeklariere und hinterher abprüfe. Das geht bestimmt auch noch irgendwie ander, aber ich mache es gerne so.

Und hey, findest du nicht, dass das hjier besser zu lesen ist? ;-)

Code: (dl )
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
#!/usr/bin/perl

use strict;
use warnings;

my @passwd = ("toor","pass2","xyz");

#Zähler für die Schleifendurchläufe:
my $i = 0;

while($i < 3) {
   print "Passwort eingeben: ";
   my $pw_eing = <STDIN>;
   chomp($pw_eing);
   
   # merken, ob das Passwort gültig war
   my $gueltig = 0;
   
   # Test der Variableninhalte:
   foreach my $pwd (@passwd) {
       print "Passwort in Array: $pwd ";
       print "Passwort aus Eingabe: $pw_eing \n";
       
       if ($pw_eing eq $pwd) {
           print "accepted! \n";
           $gueltig = 1;
           last; # last für foreach-schleife
       }
       
   }
   
   last if $gueltig; # last für while-schleife
   
   # was macht das hier wohl....
   $i++;
   
   if ($i >= 3){ # >= ist besser, denn wer sagt, dass man $i immer nur um 1 erhöhen kann
       print "Eingabe ist nur 3 mal möglich. \n Das Script wird nun beendet. \n";
       exit(0); #dann machen wir das doch auch
   }
}




Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Anfängerfrage Zeichenkettenvergleich