Curly braces are needed around blocks. In the pythonesque code you posted, a left brace is missing whenever the indentation increases, and the right brace is missing whenever it decreases.

Unfortunately, putting the curly braces in doesn't make the code work. The user's input must be repeated in the loop, too, otherwise the code would test the same number again and again.

#! /usr/bin/perl use warnings; use strict; my $im_thinking = int rand 10; print "Pick a number: "; my $guess = -1; while ($guess != $im_thinking) { $guess = <STDIN>; chomp $guess; if ($guess > $im_thinking) { print "You guessed too high!\n"; } elsif ($guess < $im_thinking) { print "You guessed too low!\n"; } } print "You got it right!\n";

Update: You can use last and the ternary operator to make the code even simpler:

#! /usr/bin/perl use warnings; use strict; my $im_thinking = int rand 10; print "Pick a number: "; while () { my $guess = <STDIN>; chomp $guess; last if $guess == $im_thinking; print "You guessed too ", $guess < $im_thinking ? 'low' : 'high', "\nTry again: "; } print "You got it right!\n";
لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

In reply to Re: Help with While Loop by choroba
in thread Help with While Loop by gavin100

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.