Perl,最佳实践:在子例程中处理空参数,使用 $_

Perl, Best Practices: Empty Arguments handling inside subroutine, use of $_

我在阅读书籍 "Perl Best Practices by Damian Conway" 时 运行 进入以下代码示例:

    sub fix {
        my (@args) = @_ ? @_ : $_; # Default to fixing $_ if no args provided

        for my $arg (@args) {
            print $arg;
        }

        return;
    }

你能帮我理解一下作者在这部分代码中到底想完成什么吗?

my (@args) = @_ ? @_ : $_; # Default to fixing $_ if no args provided

我理解"if"的作用,我很清楚当用户没有为"fix() sub"[=15=提供参数时,我们会将$_分配给“@args” ]

但不清楚将 $_ 分配给 @args 有什么好处,因为 $_ 是 undef,对吗?

提前致谢。

@_$_是两个不同的变量,所以即使@_为空也可以定义$_$_ 在许多函数中用作默认值,例如length or chr.

参见$_ and @_