如果“条件”是“做某事”的语法

时间:2018-06-19 12:57:11

标签: perl

只要我一直在使用Perl,我就知道使用if的三种方法。

if(condition){
  "do this";
  "do that";
}
"do this" if condition; 
condition ? "do this" : "or this";

但是我认为只有在只有一个命令要执行的情况下,才能使用最后两个命令。但是最近我了解到,使用第二个选项时,可以用逗号分隔多个命令,从而可以执行多个命令。

perl -e '$count++, $var="Hello" if 4 < 5; print "COUNT: $count, VAR: $var\n"'
COUNT: 1, VAR: Hello

我意识到用例仅限于此,但引起了我的兴趣。我正在尝试浏览perldoc,以找到记录此行为的语法,但看不到任何解释,如果用逗号分隔可以使用多个命令。

此行为是特定于以这种方式使用if语句的行为,还是由于Perl的其他功能而起作用?如果有人可以指出我的行为记录,那将是很棒的事情。

1 个答案:

答案 0 :(得分:5)

  

此行为是特定于以这种方式使用if语句的行为,还是由于Perl的其他功能而起作用?

,这不特定于后缀if。实际上,每个语句可以是几件事的列表。有时候这很有意义,有时候却没有。

print 1, 2;
print(1, 2);
print( (1, 2) );
print( ( (1), (2) ) );

这些都是相等的,因为列表将在Perl中展平。同样,您可以在此处进行函数调用。

foo(), bar();
( foo(), bar() );

关联性并不总是像这里一样清晰,因此在某些情况下使用括号是有意义的。

但是,如果要使用后缀if和一个块,则应使用一个块。您确实在标题中回答了自己的问题。使用do语言构造。

do {
    foo();
    bar();
} if $condition;

当然,如果这样做,您也可以使用适当的if块。