Perl regex bricht nicht wie erwartet aus der Schleife aus

7

Wenn ich das Ergebnis der Regex drucke, die ich versuche, um die Schleife zu steuern, gibt es mir die 1 oder Null, die ich erwarte. Warum funktioniert der folgende Code nicht, aber wenn ich die fünfte Zeile auschecke, funktioniert das gut?

%Vor%

Ich bin mir sicher, dass dies anderswo gelöst wurde, aber mit der Suche nicht gefunden werden konnte. Es wäre großartig, mich in die richtige Richtung zu lenken.

Ich würde normalerweise so etwas tun.

%Vor%

Aber ich versuche, von den unendlichen Schleifen wegzukommen.

    
Copas 23.05.2009, 19:20
quelle

5 Antworten

18

Das Problem hier ist, dass Sie die $ channelSelection innerhalb der Schleife erneut deklarieren, aber die Außenseite der Schleife behält den alten Wert bei. Entferne das "my" von der inneren Schleife.

    
Artem Russakovskii 23.05.2009, 19:34
quelle
11

Sie haben $channelSelection lokal in der up-Schleife neu deklariert. Auf diese Weise wird sein Wert jedes Mal verloren, wenn die Schleife ausgeführt wird. Der reguläre Ausdruck stimmt also nicht überein, da der Wert von $channelSelection wieder gleich "" ist.

Das Entfernen von my aus der Schleife löst das Problem.

    
Alan Haggai Alavi 23.05.2009 19:33
quelle
6

Wie wäre es, sich keine Sorgen zu machen?

%Vor%     
Sinan Ünür 23.05.2009 20:13
quelle
3

Die beste Lösung, um vom Benutzer Eingaben zu erhalten, ist die Verwendung des IO :: Prompt-Moduls. Es unterstützt Wiederholungen, Validierungen, Menüsystem und vieles mehr.

    
user80168 23.05.2009 21:04
quelle
2

Dies ist eher ein Stilproblem (und da Sie keine Module installieren können, hilft es Ihnen nicht), aber ich wollte nur darauf hinweisen, dass die Verwendung eines Regex bei der Suche nach festen Werten wahrscheinlich nicht das Beste ist Lösung.

Dies ist, was ich tun würde:

%Vor%

Könnte ein andermal nützlich sein.

    
Anon 24.05.2009 16:45
quelle

Tags und Links