是否可以将参数传递给通过 getopt::long 调用的子例程? 例如,当用户在命令行上指定 script.pl -pandora argument
时,我有此代码调用 &SaltGetOptions ( "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) },
它也可以处理哈希。
关于perl - Getopt::Long & GetOptions 中的子程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750507/