#!/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运行了“简单选项”部分,但也没有产生任何内容。
答案 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
时,脚本就运行了,但是并未解析所有选项。