В perl значение блока - это значение последнего выражения в блоке. Это просто сокращение для return $var
.
РЕДАКТИРОВАТЬ: пуристы указывают, что эти блоки в целом не возвращают значения (как, например, в Scala), поэтому вы не можете написать:
my $x = if (cond) { 7 } else { 8 }; # wrong!
Неявное возвращаемое значение подпрограммы, eval или do FILE - это последнее вычисленное выражение . Последнее выражение может находиться внутри блока, хотя:
sub f {
my $cond = shift;
if ($cond) { 7 } else { 8 } # successfully returns 7 or 8 from f()
}
Существует поверхностный вид блоков if / else, возвращающих значение, даже если, строго говоря, они этого не делают.