Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re^2: Simple text menu

by Mutector (Acolyte)
on Aug 08, 2012 at 13:54 UTC ( #986282=note: print w/replies, xml ) Need Help??

in reply to Re: Simple text menu
in thread Simple text menu

I think the subroutine is not entirely correct. Without te Carp which I don't have on my system I came up with this working version:
sub menu { my ($title, @option) = @{shift(@_)}; my (@name, @action); ($name[@name], $action[@action]) = splice @option, 0, 2 while @option; while(1) { print "\n$title\n"; print map "$_. $name[$_ - 1]\n", 1 .. @name; print '> '; chomp (my $choice = readline *STDIN); if ($choice and $choice > 0 and $choice <= @action) { my $do_action = $action[$choice-1]; return unless defined $do_action; $do_action->() if 'CODE' eq ref $action[$choice-1]; menu($action[$choice-1]) if 'ARRAY' eq ref $action[$choice-1]; + } else { print "Invalid choice: $choice\n" } } }

Replies are listed 'Best First'.
Re^3: Simple text menu
by jdporter (Chancellor) on Aug 08, 2012 at 17:31 UTC
    Carp which I don't have on my system

    Are you sure? What happens when you type:

    perl -MCarp -e0
    Carp is standard. If you don't have it, your perl installation is seriously b0rken.

      My mistake. It is there all right. I jumped to the wrong conclusion because it gave an error when trying the script.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://986282]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2023-01-30 11:42 GMT
Find Nodes?
    Voting Booth?

    No recent polls found