You're misusing the range operator. You probably want while( $reply !~ /^[abcd]$/i );, which is to say, while $reply does not contain the single character of a, b, c, or d, case insensitive.

I don't really love the loop you've chosen either. I think I would be more comfortable with:

prompt; while( <STDIN> ) { chomp; last if /^[a-d]$/i; prompt; } sub prompt { print "\nPick a letter between a and d.\n"; }

The inelegant part is that you have to prompt outside of the loop once, but the more elegant part is that you're actually checking whether or not there IS more input to be read. That way, should STDIN happen to run out of input (for example, in the case of the script being fed an input file instead of keyboard input, it can terminate when it runs out of lines of text to read.


Dave


In reply to Re: do-while loop by davido
in thread do-while loop by irvson

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.