Нет, нет.
Однако вы можете переписать свой пример, чтобы использовать или ||
или определенный-или //
оператор.
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
является ключевым словом . Не используйте его в качестве идентификатора подпрограммы.