在GetOptions中插入并使用未知选项

TTa*_*Ta4 0 perl

我正在尝试创建一个获取参数的脚本(用Perl编写).调用应如下所示:

./script [action] --option1 --option2 ... --optionK 
Run Code Online (Sandbox Code Playgroud)

我使用GetOptions:Long模块.我也用它$ARG[0]来获取动作.例:

./script report --color black --version 19.4
Run Code Online (Sandbox Code Playgroud)

现在我想向用户提供插入他想要的任何命令的权力(例如,它可以插入带参数的另一个脚本).我这样做是这样的:用户可以在命令行参数的末尾(仅)插入他想要的任何东西,例如:

./script report --color black --version 19.4 more and more --info 551_5 from --the user
Run Code Online (Sandbox Code Playgroud)

我想解析这个数组@ARGV并将其他信息插入变量:

$additional = "more and more --info 551_5 from --the user"
Run Code Online (Sandbox Code Playgroud)

我发现在使用之后GetOptions,它将$ARGV[0]@ARGV数组中删除这些选项(不包括).问题是,我真的不知道如何从阵列中获取附加信息.也许我应该添加一个额外的选项,如下所示:

./script report --color black --version 19.4 --additional more and more --info 551_5 from --the user
Run Code Online (Sandbox Code Playgroud)

把一切都搞定additional.但这种方式,我有一个问题-它将把--info--the作为参数.

我该如何解决这个问题?

编辑:我看到pass_through可以使用.但是如果用户有一个类似于我可用选项的选项呢?它可能会有一些问题.是否可以像字符串一样处理它?同样,我将不得不解析@ARGV并删除$ARGV[0](动作).

编辑-2:该--方法将起作用.但我觉得这是一种解决方法,而不是解决这个问题的正确方法.必须有一个更清洁的方法来做到这一点.也许改成不同的模块?

Uji*_*T34 6

您可以使用它--来分隔其他参数:./script --option1 --option2 -- --userOption1 --userOption2

https://metacpan.org/pod/Getopt::Long#Mixing-command-line-option-with-other-arguments