Perl,最佳做法:子例程中的空参数处理,使用$ _

时间:2019-07-04 16:31:30

标签: perl arguments subroutine

在阅读本书“ Damian Conway的Perl最佳实践”时遇到了以下代码示例:

    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”提供参数时,我们会将$_分配给“ @args”

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

谢谢。

1 个答案:

答案 0 :(得分:3)

@_$_是两个不同的变量,因此即使$_为空,也可以定义@_$_在许多功能(例如lengthchr

请参见$_@_