Существует ли системная переменная для доступа к последнему возвращаемому значению подпрограммы в Perl? - PullRequest
0 голосов
/ 08 мая 2018

В Perl есть системные переменные для общего доступа к переменным в данном контексте, например, использование $1 после регулярного выражения для доступа к первому сгруппированному элементу или $_ в цикле для доступа к текущему значению.

Мне было любопытно, есть ли подобная системная переменная для возвращаемых значений из подпрограмм.

ех.

my $var = (format($num)) ? $_ : 'N/A';

где $_ будет системной переменной для доступа к результату format($num), если он определен.

1 Ответ

0 голосов
/ 08 мая 2018

Нет, нет.

Однако вы можете переписать свой пример, чтобы использовать или || или определенный-или // оператор.

my $foo = frobnicate() || 'N/A'; # only true values, so no 0, q{} or undef
my $bar = frobnicate() // 'N/A'; # no undef

Конечно, это не будет удерживать значение некоторое время, чтобы использовать его дальше в коде.

Это также будет работать только в том случае, если возвращаемое значение подпрограммы является только одним значением. Если возвращается список, он будет использовать самое правое значение из списка.

sub frobnicate { qw/a b 0/ }
my $var = frobnicate() || 'N/A';
say $var;

Выше будет напечатано N/A.

sub frobnicate { qw/a b c/ }
my $var = frobnicate() || 'N/A';
say $var;

Пока будет напечатано c.


Не пытайтесь быть коротким ради короткого кода. В большинстве случаев вам нужен простой для чтения код.


Обратите внимание, что format является ключевым словом . Не используйте его в качестве идентификатора подпрограммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...