没关系:
if ($some_var==$some_value) {}
这也没关系:
print "hello" if ($some_var==$some_value);
但这会引发错误:
if ($some_var==$some_value) print "some_message";
为什么Perl中的'if'子句必须带有大括号或什么都没有?
答案 0 :(得分:9)
避免编译器构造中众所周知的问题,称为“悬挂其他”。见http://en.wikipedia.org/wiki/Dangling_else
答案 1 :(得分:6)
这就是perl
语法的定义方式。 if (expr) BLOCK
语法需要块,而不是语句。请参阅perlsyn
(“复合语句”部分)。
摘录:
if语句很简单。因为BLOCK总是用大括号括起来,所以如果有其他的话,就不会有任何歧义。
答案 2 :(得分:5)
Perl语法相当复杂,难以解析。我认为,在if子句之后强制使用花括号,以消除歧义并使Perl代码更易于解析。
答案 3 :(得分:2)
if ($some_var==$some_value);
并不“好”(我也没想到)。
为什么需要BLOCK,不允许使用普通EXPR?因为那是拉里想要的。
答案 4 :(得分:2)
我不知道curlies,但Larry发言说 parens 可能是可选的。我认为他决定反对它以保持代码可读。
答案 5 :(得分:1)
我认为它根本不受支持,但这是:print "some_message" if($some_var == $some_value);