perl - Getopt::Long & GetOptions 中的子程序

标签 perl arguments

是否可以将参数传递给通过 getopt::long 调用的子例程? 例如,当用户在命令行上指定 script.pl -pandora argument

时,我有此代码调用 &Salt
GetOptions (            "domain=s"    => \$domain,
                        "pandora=s"   => \&Salt,
                        "reverse=s"   => \$reverse,
                        "help"        => \&Usage)
       or die(&Usage);

我如何获取要传递给 Salt 的参数? 尝试了几件事,例如:

GetOptions (            "domain=s"    => \$domain,
                        "pandora=s"   => \&Salt($pandora),
                        "reverse=s"   => \$reverse,
                        "help"        => \&Usage)
       or die(&Usage);

甚至

    GetOptions (            "domain=s"    => \$domain,
                            "pandora=s"   => \&Salt($_[1]),
                            "reverse=s"   => \$reverse,
                            "help"        => \&Usage)
       or die(&Usage);

但是不行

我知道我可以通过做 => $pandora 来让它工作,然后在代码中使用条件 if ($pandora) { &Salt($pandora) } 但我会发现直接放置 sub 会更好如果可能,在 getOptions 中

谢谢

最佳答案

"pandora=s" => sub { my ($optname, $optval) = @_; Salt($optval) },

它也可以处理哈希。

参见 User-defined subroutines to handle options文档中的部分。

关于perl - Getopt::Long & GetOptions 中的子程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750507/

相关文章:

c# - 通过命令行将 2 个带空格的文件路径传递给 C# 应用程序

python - 如何在十六进制Linux终端中发送参数

function - lua中算术运算字符串的分割

perl - perl 模块创建是否有任何特定的约定/最佳实践?

perl - "inappropriate ioctl for device"

perl - 基本的 Perl 散列排序键,值,但也键 AND 值

c++ - 将临时对象作为参数传递 (C++)

perl - 在 perldoc 中使撇号正确呈现

performance - 检查 Perl 函数参数值得吗?

gdb - 运行程序时将命令传递给 gdb