App-ConMenu
view release on metacpan or search on metacpan
lib/App/ConMenu.pm view on Meta::CPAN
}
sub printMenu {
my $self = shift;
my $menuItemsUnsorted = $self->{'menu'}->[0];
my @menuItems = sort { {$a} cmp {$b} } keys(%$menuItemsUnsorted);
$self->{menuItems} = \@menuItems;
cls();
my $i=1;
my @menuItemsNumerical = map { '['. $i++.'] '.$_ } @menuItems;
say join("\n", @menuItemsNumerical);
say 'Choose a menu item by pressing the corresponding number';
say 'q to exit';
}
sub waitForInput {
my $self = shift;
my $selection = <>;
if ($selection =~ /[0-9]+/){
if ($selection > scalar ($self->{menuItems}) or $selection < 1 ){
say 'Error no such menu item';
exit;
}
} else {
exit;
}
my $menuItems = $self->{menuItems};
$self->execute($self->{menu}->[0]->{$menuItems->[$selection -1]})
}
# create a default file to get people going.
scripts/m.pl view on Meta::CPAN
my $menu = App::ConMenu->new();
my $homeDir = File::HomeDir->my_home;
my $filePrefix = '.'; #.filename for unix type systems
if ($^O eq 'MSWin32') {
$filePrefix = '_'; # _filename for windows.
}
my $fullFileName = File::Spec->catfile($homeDir, $filePrefix.'con_menu.yml') ;
#offer to create a default file
if (! -e $fullFileName ) {
say 'The Yaml menu file does not exist in your home dir. ';
say 'Would you like me to create it ? (Y/N)';
my $selection = <>;
chomp($selection);
if (uc($selection) eq 'Y' ) {
$menu->createDefaultFile($fullFileName);
say ' File created at '.$fullFileName.' edit to add your entries';
}
exit;
}
$menu->{fileName} = $fullFileName;
$menu->loadMenuFile();
$menu->printMenu();
$menu->waitForInput();
( run in 0.715 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )