我想通过几个参数,其中一个是可选的,一个函数。我知道的唯一方法是使用列表(@)作为参数。因此,它没有内容或1个元素(永远不会undef),所以我可以使用以下代码:
sub someFunction($$@) { my ( $oblig_param1,$oblig_param2,$option_param ) = @_; ... }
解决方法
您可以在原型中使用分号来指示所需参数的结束:
sub someFunction($$;$) { my ( $oblig_param1,$option_param ) = @_; ... }
的;在@或%之前是可选的,根据the docs,“gobble up everything”。
编辑:由于DVK在评论中指出(而TLP在另一个答案中强调),您可能最好只是避免原型:
sub someFunction { my ( $oblig_param1,$option_param ) = @_; ... }
Perl的原型有它们的用途(主要是为Perl的内置函数提供隐含的上下文强制参数)。它们不应该被用作一个机制来检查该函数是用正确的数字和类型的参数调用的。