无法解析命令行长选项

时间:2012-08-22 16:09:42

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

#!/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运行了“简单选项”部分,但也没有产生任何内容。

2 个答案:

答案 0 :(得分:11)

我相信您在she-bang线上包含的-s命令行选项正在咬你。根据{{​​3}},-s命令行选项:

  

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

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

所以,长话短说,请提出第一行:

#!/usr/bin/perl

答案 1 :(得分:0)

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

当我尝试仅在命令行上调用我的script.pl而不先放置perl时,脚本就运行了,但是并未解析所有选项。