In my code below, when I enter in some non-numeric letters at the input (ie. $temp), it responds with “Too cold!” instead of “invalid”. What am I missing?
#!/usr/bin/perl
print "What is the temperature outside? ";
$temp=<>;
if ($temp > 72) {
print "Too hot!\n"; }
elsif ($temp <= 72) {
print "Too cold!\n"; }
else {
print "Temperature $temp is invalid.\n"; }
This is because it will be treated as 0 if it cannot be converted into a number. You should check before if the response has only numbers, or restrict the input in any other way so that only a valid number can be entered. Something along the lines:
(prints invalid if
$tempcontains any non-digit character. Note that this may invalidate “+” and “-“, but you get the idea).