& 在现代 Perl 中是可选的,如果子例程已预先声明,则括号也是可选的。
我注意到很多时候,人们在调用 Perl 子例程时使用可以省略括号的事实(例如,从最近的 SO 答案中随机引用):
open my $fin, '<', $file;
与
open(my $fin, '<', $file);
使用第二个(无括号)版本的主要(理想情况下,技术)原因是什么?
perldoc perlsyn除了再次提及可选性外,没有就该主题发表任何意见。
对我来说,总是使用括号主要是一种风格选择,因为我是一名 C 开发人员。但我想知道作为 Perl 开发人员,我是否因为不使用可选的无括号语法而遗漏了什么。
PS我很清楚喜欢带括号的版本的原因-例如,间接对象表示法的问题,或者在使用不带括号之前声明非内置函数的要求,或者优先级visavi or
vs.的问题||
。我感兴趣的是相反的。
PPS 我对仅仅陈述“它的风格更好”/“更具可读性”而没有任何研究支持这一观点的答案不太感兴趣。我对喜欢省略括号的技术原因或支持的风格差异偏好感兴趣(请不要将“支持”与“呼吁权威”或“argumentum ad populum”的谬误混淆。一项研究显示速度或对代码的理解就是证明。“Perl 社区中的每个人都同意”或“Damien Conway 建议这一点”而不解释 Damien 如何支持这一点不是)。