为什么Perl不允许一个衬里“解锁”?

时间:2009-12-09 18:36:30

标签: perl syntax

例如:

if (something)
    function();
else
    nope();

6 个答案:

答案 0 :(得分:11)

这取决于你的意思“为什么?”。

下来的第一只乌龟是Perl control structures are defined in terms of BLOCKs,而不是语句(如C中所示)。 Perl中的BLOCK由curlies分隔。

下一个下来的龟将是拉里·沃尔(Larry Wall)关于为什么BLOCK属于那里而不是陈述的感觉!

答案 1 :(得分:3)

他们可以是:

$something ? function() : nope();

更新:更一般地说,这是因为正如乔纳森指出的那样,拉里这样说。在其他情况下,可以抛出大括号语法:

function() if $something;

nope() foreach @foo;

function() while <FH>;

甚至:

function() and nope() if $something;

答案 2 :(得分:1)

通常你会使用条件运算符:

某事? function():nope;

答案 3 :(得分:1)

你的意思是something ? function() : nope();

答案 4 :(得分:1)

因为Perl总是需要围绕块的大括号 - 这简化了它的语法。

你总是要写:

if (something) { function(); } else { nope(); }

或者像其他人建议的那样使用条件运算符。

答案 5 :(得分:1)

如果你不需要别人,你可以使用if或者除非在一行结尾处使用一行。

例如:

function() if (something);

function() unless (something);