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. |