There may be a better module, but Term::Prompt has an option for building a menu. It handles parsing input, making sure the user input a valid menu choice, taking multiple selections, etc. etc. Maybe something like this (pretty much taken straight from the module's documentation):
use warnings;
use strict;
use Term::Prompt;
my %option = (
1 => sub { system('~/script1.pl') },
2 => sub { system('~/script2.pl') },
3 => sub { system('~/script3.pl') },
4 => sub { exit },
);
my $result;
while(1) {
$result = prompt("m", {
prompt => 'Pick an option',
title => 'Menu',
items => [ qw (Option1 Option2 Option3 Exit) ],
order => 'down',
rows => 4,
cols => 1,
display_base => 1,
return_base => 1,
accept_multiple_selections => 0,
accept_empty_selection => 0,
ignore_whitespace => 0,
separator => '[,/\s]+'
},
'1-3, 4 to exit', '1');
$option{$result}->();
}
| [reply] [d/l] |
| [reply] |
I have used Term::ANSIMenu in a couple of projects. Its easy to use, and works great. | [reply] |
Log in where?
To a console? A couple of solutions have been posted already.
To a GUI? Perhaps Tk or Wx.
To a website? CGI::Application and Catalyst suggest themselves.
| [reply] |
Note that writing this in perl may not be your best option - you may want to look into the program pdmenu
--
@/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/;
map{y/X_/\n /;print}map{pop@$_}@/for@/
| [reply] [d/l] |
Maybe I'm stating the obvious, but how about HTML (maybe with HTML::Template) and CGI? Unless, of course, this not a Web app.
—Brad "The important work of moving the world forward does not wait to be done by perfect men." George Eliot
| [reply] |