Khi tôi in kết quả của regex tôi đang cố gắng sử dụng để kiểm soát vòng lặp cho đến khi nó mang lại cho tôi 1 hoặc null tôi mong đợi. Tại sao mã bên dưới không hoạt động nhưng nếu tôi bỏ ghi chú dòng thứ năm thì nó hoạt động tốt?Perl regex không vi phạm cho đến khi vòng lặp như mong đợi
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]/);
}
Tôi chắc chắn điều này đã được giải quyết ở nơi khác nhưng không thể tìm thấy bằng tìm kiếm. Chỉ cho tôi đi đúng hướng sẽ là tuyệt vời.
Tôi thường làm như thế.
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]/);
}
Nhưng tôi đang cố thoát khỏi các vòng vô hạn.
Heh, cùng một câu trả lời, cách nhau 6 lần. :) –
Có tôi muốn cung cấp cho bạn kiểm tra nhưng Artem đã từng nhanh hơn một chút. hehe Good job tho +1 – Copas
Thật tuyệt! :-) –