gpt4 book ai didi

perl - 使用Getopt解析args时如何允许未定义的选项

转载 作者:行者123 更新时间:2023-12-03 12:45:42 25 4
gpt4 key购买 nike

如果我有这样的命令行:

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-无论如何



未知选项:任何
其余选项:

最佳答案

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

然后,它支持实际的选项(例如,以“-”开头且没有特殊的“-”定界符表示“真实”选项结尾的内容)。

这是perldoc的报价:


pass_through(默认值:禁用)

未知,模棱两可或选项值无效的选项在@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 0\n";
print Data::Dumper->Dump([\@ARGV],["ARGV"]);

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

关于perl - 使用Getopt解析args时如何允许未定义的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com