【问题标题】:Unable to parse command line long options无法解析命令行长选项
【发布时间】:2012-08-18 02:49:24
【问题描述】:
#!/usr/bin/perl -sw
use strict;
use warnings;
use Getopt::Long;

my $remote = 0;
my $test = 0;
GetOptions ('remote' => \$remote, 'test' => \$test);
print "$remote:$test\n";

perl test.pl --remote --test

上面打印“0:0”。我是 Perl 新手,所以我无法确定为什么这不起作用。

我还从 http://perldoc.perl.org/Getopt/Long.html#Simple-options 运行了“简单选项”部分,但也没有产生任何结果。

【问题讨论】:

  • @raina77ow - 我确实有,只是没有包含在这篇文章中。

标签: perl command-line-arguments getopt-long


【解决方案1】:

请注意,如果通过 cmd 在 Windows 上运行脚本,则必须在脚本名称前指定 perl,否则 GetOptions 不起作用。

当我尝试在命令行上简单地调用我的 script.pl 而不先输入 perl 时,脚本运行但所有选项都没有被解析。

【讨论】:

    【解决方案2】:

    我相信你在 she-bang 行中包含的 -s 命令行选项正在咬你。根据perlrun documentation-s命令行选项:

    在命令行上的程序名称之后但任何文件名参数之前(或 -- 的参数之前)启用基本开关解析。

    如果您删除该选项,事情应该会如您所愿。我还建议删除-w,因为您已经在使用use warnings 指令(use warnings 指令功能更全面,基本上替换了-w 选项)。

    所以,长话短说,写你的第一行:

    #!/usr/bin/perl
    

    【讨论】:

    • 谢谢,我之前将它用于短命令,但想替换那些(因为我一直在使用完整的单词。)
    猜你喜欢
    • 2013-08-04
    • 2015-02-28
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2015-11-12
    • 2013-05-16
    相关资源
    最近更新 更多