只要我一直在使用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的其他功能而起作用?如果有人可以指出我的行为记录,那将是很棒的事情。
答案 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
块。