加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何在使用Getopt解析参数时允许未定义的选项

发布时间:2020-12-15 21:18:09 所属栏目:大数据 来源:网络整理
导读:如果我有一个命令行,如: my_script.pl -foo -WHATEVER 我的脚本知道–foo,而我希望Getopt设置变量$ opt_foo,但是我不了解-WHATEVER。我如何告诉Getopt来解析我已经告诉过的选项,然后将其余的参数放在字符串变量或列表中? 一个例子: use strict;use wa
如果我有一个命令行,如:
my_script.pl -foo -WHATEVER

我的脚本知道–foo,而我希望Getopt设置变量$ opt_foo,但是我不了解-WHATEVER。我如何告诉Getopt来解析我已经告诉过的选项,然后将其余的参数放在字符串变量或列表中?

一个例子:

use strict;
use warnings;

use Getopt::Long;

my $foo; 

GetOptions('foo' => $foo); 

print 'remaining options: ',@ARGV;

然后,发行

perl getopttest.pl -foo -WHATEVER

Unknown option: whatever
remaining options:

解决方法

您需要通过Getopt :: Long :: Configure(“pass_through”)配置“pass_through”选项;

然后它支持实际的选项(例如以“ – ”开头的东西,没有特殊的“ – ”分隔符来表示“真实”选项的结束)。

这是perldoc报价:

> pass_through(默认值:disabled)

未知,不明确或提供无效选项值的选项将在@ARGV中传递,而不是标记为错误。这使得可以编写只处理用户提供的命令行参数的一部分的包装器脚本,并将剩余的选项传递给其他一些程序。

这是一个例子

$ cat my_script.pl
#!/usr/local/bin/perl5.8 -w

use Getopt::Long;
Getopt::Long::Configure("pass_through");
use Data::Dumper;
my %args;
GetOptions(%args,"foo") or die "GetOption returned 0n";
print Data::Dumper->Dump([@ARGV],["ARGV"]);

$ ./my_script.pl -foo -WHATEVER          
$ARGV = [
          '-WHATEVER'
        ];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读