对于perl中的可选参数,默认为true

jor*_*anm 3 perl

我正在定义一个带有可选参数的方法.通常我会使用这样的东西:

sub foo {
    ($self, $optarg) = @_;
    $optarg ||= 1;
}
Run Code Online (Sandbox Code Playgroud)

我希望将可选参数视为布尔值,默认值为true.这显然不适用于上述内容,因为$optarg如果未传入参数,则将评估为false.

有没有办法区分传递参数的缺失和评估为false的值?

Bor*_*din 10

如果你有Perl版本5.10或更高版本,那么你可以替换$optarg ||= 1$optarg //= 1,$optarg只有在它修改时才会修改undef.

或者,如果您希望允许undef作为显式false值传递,您可以说$optarg = 1 if @_ < 2.