如何在Perl中构建一个简单的菜单?

 MM我男神 发布于 2022-12-26 11:20

我正在研究一个需要一些基本菜单功能的Perl脚本.最后,我希望每个菜单都有几个选项,然后选择返回上一个菜单或退出.

例:

这是一个菜单:

    选择1

    选择2

    返回上一级菜单

    出口

选择一个选项:

我目前有一个菜单子程序来制作菜单,但没有功能允许它返回上一个菜单.

    sub menu
    {
        for (;;) {
            print "--------------------\n";
            print "$_[0]\n";
            print "--------------------\n";
            for (my $i = 0; $i < scalar(@{ $_[1]}); $i++) {
                print $i + 1, "\.\t ${ $_[1] }[$i]\n";
            }
            print "\n?: ";
            my $i = ; chomp $i;
            if ($i && $i =~ m/[0-9]+/ && $i <= scalar(@{ $_[1]})) {
                return ${ $_[1] }[$i - 1];
            } else {
                print "\nInvalid input.\n\n";
            }
        }
    }

    # Using the menu
    my $choice1  = menu('Menu1 header', \@list_of_choices1);

    # I would like this menu to give the option to go back to
    # the first menu to change $choice1
    my $choice2 = menu('Menu2 header', \@list_of_choices2);

我不想对所有菜单进行硬编码,并使用if/elsif语句进行所有处理,因此我将菜单转换为函数.

我的菜单目前看起来像这样......

菜单标题:

    选择1

    选择2

    Choice3

?:(在此输入输入)

此解决方案仍然不允许用户返回上一个菜单或退出.我正在考虑制作一个菜单类来处理菜单,但我仍然不太喜欢面向对象的Perl.这是一个只有少量菜单的小程序,因此使用复杂的菜单构建模块可能有点过分.我想让我的代码尽可能轻松.

编辑:

感谢您的快速回复!但是仍然存在问题.当我从"Menu1"中选择一个选项并进入"Menu2"时,我希望从"Menu1"中保存选项供以后使用:

菜单1:

    Choice1 < - 如果选择存储值,则转到下一个菜单

    选择2 < - ......

    退出< - 退出

菜单2:

    Choice1 < - 如果选择存储值,则转到下一个菜单

    选择2 < - ......

    返回< - 返回上一级菜单以重新选择值

    退出< - 退出

选择Choice1或Choice2应该在变量中存储一个值供以后使用,进入下一个菜单.然后,如果您选择从Menu2返回第一个菜单,它将为您提供重新选择并重新定义变量的选项.我试图避免使用全局变量,这使得这非常困难.

在完成所有菜单并设置所有这些变量的值之后,我想运行一个子程序来处理所有选项并打印最终输出.

 sub main () {

   # DO MENU STUFF HERE

   # PROCESS RESULTS FROM MENU CHOICES
   my $output = process($menu1_choice, $menu2_choice, $menu3_choice, ... );
 }

此外,如果任何人使用类或其他数据结构有一个面向对象的方法,虽然它可能是矫枉过正,我仍然希望看到它并尝试包围我的想法!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有