这可能看起来像最近的问题,问
why Perl doesn’t allow one-liners to be “unblocked,”,但我发现这个问题的答案不能令人满意,因为他们提到
the syntax documentation that says that braces are required,我认为是只是乞讨的问题,或忽略了这个问题,只是提供无支持的替代品。
为什么Perl需要大括号用于控制语句,如if和for?换句话说,为什么Perl需要块而不是语句,像其他一些流行的语言允许?
解决方法
一个原因可能是某些样式要求你应该总是使用大括号控制结构,即使一个衬垫,以避免打破他们以后,例如:
if (condition) myObject.doSomething(); else myObject.doSomethingElse();
然后有人给第一部分添加更多东西:
if (condition) myObject.doSomething(); myObject.doSomethingMore(); // Syntax error next line else myObject.doSomethingElse();
或更糟:
if (condition) myObject.doSomething(); else myObject.doSomethingElse(); myObject.doSomethingMore(); // Compiles,but not what you wanted.
在Perl中,这些错误是不可能的,因为不使用大括号控件结构总是一个语法错误。实际上,已在语言语法级别强制执行样式决定。
无论这是真正原因的任何部分,只有拉里的胡子知道。