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.
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.
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.
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.
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.