Perl 如果用户未提供输入,则通过命令行和弹出窗口传递参数

Perl 如果用户未提供输入,则通过命令行和弹出窗口传递参数,perl,Perl,下面的代码创建一个文件并通过命令行接受输入参数 我想做两件事: 如果用户忘记在命令行上输入,系统应该给出某种警报或消息。假设如果我忘记提供输入参数,那么系统不应该继续执行脚本 假设如果系统试图创建已存在的文件,目前我们正在管理,显示一条消息,如“文件已存在”,但我想问一些问题,如“文件已存在,是否确实要覆盖?是/否”。如果他回答是,那么只需覆盖现有的一个,否则系统应该要求用户提供另一个输入 #/usr/local/bin/perl #打印“内容类型:text/html\n\n”#HTTP头 $

下面的代码创建一个文件并通过命令行接受输入参数

我想做两件事:

  • 如果用户忘记在命令行上输入,系统应该给出某种警报或消息。假设如果我忘记提供输入参数,那么系统不应该继续执行脚本

  • 假设如果系统试图创建已存在的文件,目前我们正在管理,显示一条消息,如“文件已存在”,但我想问一些问题,如“文件已存在,是否确实要覆盖?是/否”。如果他回答是,那么只需覆盖现有的一个,否则系统应该要求用户提供另一个输入


  • #/usr/local/bin/perl
    #打印“内容类型:text/html\n\n”#HTTP头
    $numArgs=$#ARGV+1;
    foreach$argnum(0..$#ARGV){
    $GET_ALL_USER_INPUTS=“$ARGV[$argnum]\n”;
    }
    @INPUT\u ARR=拆分(/,/,$GET\u ALL\u USER\u INPUTS);
    $filename=“DD_WRITE_${INPUT_ARR[0]}.txt”;
    $GET\u ARR\u SIZE=scalar@INPUT\u ARR;
    $CLIENT_NAME=“T-sys”;
    $DD_CONTENT=“设计文档${INPUT_ARR[0]}-${CLIENT_NAME}:-\n”;
    $DD_CONTENT.=“---------------------------------------------”;
    #获取无长度并生成虚线
    
    对于($i=0;$i可以很容易地确定命令行参数的存在:

    if (exists $ARGV[0]) { do_stuff_with_args } else { die "No arguments!"; }
    

    我理解问题是“如何提示用户?”因为您不知道如何进行提示。我跳过问题描述的第1部分,因为您已经知道

    首先,您应该将命令行参数处理替换为。正如现在编写的那样,它是不必要的复杂

    在运行时从用户处获取输入很容易,Perl发行版已经提供了这一点

    use ExtUtils::MakeMaker qw(prompt);
    my $user_answer = prompt 'Okay to overwrite? ';
    if ('y' eq $user_answer) { …
    

    我看到您已经注释掉了一段关于HTTP的代码。如果您打算在CGI环境下运行此程序,提示将不会像您预期的那样工作。在Web上,您需要完全不同的技术和控制流程。

    现在读到这篇文章时,您有一个愿望,而不是一个问题。请改进并告诉我们您具体需要什么问题是如何在尝试创建已经存在的文件时发出警报,需要在命令行中请求确认它自己…
    if(!(exists$ARGV[0]){die“No arguments”;}
    在脚本顶部…我安装了IO::Prompt,但它不起作用,出现错误,如在@INC中找不到IO::Prompt…错误然后您实际上没有安装它。请参阅IO::Prompt在Windows上不起作用,请参阅。我将编辑答案。
    use ExtUtils::MakeMaker qw(prompt);
    my $user_answer = prompt 'Okay to overwrite? ';
    if ('y' eq $user_answer) { …