Perl, Best Practices: обработка пустых аргументов внутри подпрограммы, использование $ _ - PullRequest
2 голосов
/ 04 июля 2019

Я столкнулся со следующим примером кода, когда читал книгу «Лучшие практики 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", и для меня ясно, что мы назначим $_ для @args, когда пользователь не предоставит параметры для "fix () sub"

Но неясно, какая выгода назначать $_ @args, поскольку $_ является undef, верно?

Заранее спасибо.

1 Ответ

3 голосов
/ 04 июля 2019

@_ и $_ - две разные переменные, поэтому $_ можно определить, даже если @_ пусто. $_ используется по умолчанию во многих функциях, например, длина или chr .

См. $ _ и @_.

.
...