> Hi list,
>
> Hope this is not too simple or a stupid question:
>
> I have a slight problem with a loop. It is a simple numbers guessing game. It
> works fine, but when I run this script, it gives me "Too low" immediately aft
> er
> the prompt. What should I do to get the last "else" statement displayed first
> ?
Nothing. You should re-arrange your code to do the tests you want in
the order you want them.
Get in the habit of using strict and warnings -- 'use warnings' is
subtly different from 'perl -w' and you should start good habits
early. Upgrade if you are using an ancient version of Perl that does
not come with warnings.
I would also advise getting in the habit of tidying up things you get
from STDIN. While "3\n" is just as three as "3", were you to start
using $guess in a print (e.g. print "$guess was too low\n"; ) you'd
have some ugly output.
#!/usr/bin/perl
use strict;
use warnings;
our ($upper, $lower, $target) = ( 20, 1, 11 );
while (1) {
chomp (my $guess = <STDIN>);
if ($guess < $lower or $guess > $upper) {
print "Try a guess that is between $lower and $upper\n";
} elsif ($guess < $target) {
print "Too low\n";
} elsif ($guess > $target ) {
print "Too high\n";
} elsif ($guess == $target) {
print "You got it!\n";
last;
}
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>