Когда я печатаю результат регулярного выражения, который я пытаюсь использовать для контроля цикла, он дает мне 1 или ноль, который я ожидаю. Почему код ниже не будет работать, но если я раскомментирую пятую строку, она будет работать нормально?
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]/);
}
Но я пытаюсь уйти от бесконечных петель.