正規表現の結果を出力すると、untilループを制御するために使用しようとしているときに、1またはnullが返されます。なぜ以下のコードは動作しませんが、5行目のコメントを外すとうまくいきますか?Perl正規表現が期待通りにループを終了しない
print("Please enter 1, 2, 3 or 4 : ");
my $channelSelection = "";
until ($channelSelection =~ /^[1-4]$/) {
chomp(my $channelSelection = <STDIN>);
#last if ($channelSelection =~ /^[1-4]$/);
print ("Invalid choice ($channelSelection) please try again: ")
if ($channelSelection !~ /[1-4]/);
}
これは他の場所で解決されていますが、検索では見つかりませんでした。私を正しい方向に向けることは素晴らしいことです。
私は通常、次のようにします。
print("Please enter 1, 2, 3 or 4 : ");
my $channelSelection = "";
while (1) {
chomp(my $channelSelection = <STDIN>);
last if ($channelSelection =~ /^[1-4]$/);
print ("Invalid choice ($channelSelection) please try again: ") if ($channelSelection !~ /[1-4]/);
}
しかし、私は無限ループから離れようとしています。
Heh、同じ回答、6秒間隔。 :) –
はい、私はあなたにチェックをしたかったが、アルテムはそれほど速くなかった。 hehe良い仕事tho +1 – Copas
それは素晴らしいです! :-) –