The easiest way to handle getting an input value from the user is to use @ARGV:
#!/usr/bin/perl use strict; my $Usage = "Usage: $0 N\n where N is a number between 1 and 10\n"; die $Usage unless ( @ARGV == 1 and $ARGV[0] =~ /^\d{1,2}$/ and $ARGV[0] > 0 and $ARGV[0] <= 10 ); # now do whatever you need to do with $ARGV[0]...
If you're already doing stuff with command-line args that are providing other information for the script, you might consider using Getopt::Std or Getopt::Long.

Letting the user put the information on the command line is generally easier for both the script writer (less code to write) and the user (better line editing facilities provided by the shell than by the perl script reading from STDIN, plus the ability of running your script non-interactively (e.g. from a cron job or another script). If you want to write more code to provide a better keyboard input facility for the user, you could use ReadLine. Nothing wrong at all with that -- it's excellent when you really need it, e.g. for carrying on indefinite dialogs with users, like the CPAN shell does. But if you're just dealing with something simple that can be fed in from the command line, using @ARGV is much simpler, and simpler is better.


In reply to Re: restart program on wrong user input. by graff
in thread restart program on wrong user input. by BioGeek

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.