Преобразование неверной числовой строки в число приводит к 0
, поэтому вы можете использовать что-то, как показано ниже, чтобы увидеть, был ли ввод действительно действительным или нет.
print "What is the temperature outside? ";
$temp=<>;
if ($temp == 0 && $temp ne '0') {
print "Temperature $temp is invalid.\n"; }
elsif ($temp > 72) {
print "Too hot!\n"; }
elsif ($temp <= 72) {
print "Too cold!\n"; }
Объяснение: Если входная строка была преобразована в 0 (ноль), хотя сама строка не равна '0' (ноль), то ввод не является числовым, следовательно; недействительный.
Вы также можете проверить, содержит ли вход только [0-9.]
, используя регулярное выражение, которое гарантирует, что это действительное число (также помните, что числа не начинаются с 0 (нуля), а затем имеют цифры, которые следуйте, если вы не пишете в восьмеричном.
Примечание : не забудьте обрезать входную строку из пробелов перед проверкой выше.