2013-08-22 3 views

ответ

8

Вторая ошибка синтаксиса. Я полагаю, вы имели в виду

# unless statement modifier 
return $result unless $exist_condition; 

и

# unless statement 
unless ($exist_condition) { return $result; } 

Они практически одинаковы. Одно отличие состоит в том, что оператор unless создает область видимости (фактически два), а модификатор оператора unless - нет.

>perl -E"my $x = 'abc'; unless (my $x = 'xyz') { return; } say $x;" 
abc 

>perl -E"my $x = 'abc'; return unless my $x = 'xyz'; say $x;" 
xyz 

На практике это, вероятно, никогда не придет, поэтому разница - это всего лишь вопрос стиля.

1

Как написано в настоящее время, вторая - синтаксическая ошибка.

Если изменено на:

unless ($exist_condition) { return $result; } 

, то нет никакой разницы. Используйте то, что имеет смысл в контексте.