为什么Perl控制语句需要大括号?

这可能看起来像最近的问题,问 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中,这些错误是不可能的,因为不使用大括号控件结构总是一个语法错误。实际上,已在语言语法级别强制执行样式决定。

无论这是真正原因的任何部分,只有拉里的胡子知道。

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...