Perl 编程/条件语句
外观
< Perl 编程
(从 Perl 编程/The if Control Structure 重定向)theif语句是 Perl 中主要的条件结构。语法如下
if (''boolean expression'') {
''statement'';
}
如果布尔表达式计算结果为真,则执行两个花括号之间的语句。语句周围的花括号是强制性的,即使只有一个语句(与 C 或 Java 不同)。
一个替代语法是if语句,可用于单个语句。这涉及将条件放在语句的末尾而不是前面,并且不包含花括号
''statement'' if (''boolean expression'') ;
以下语句是同义词
if ($x == 20) { print "hello"; }
print "hello" if ($x == 20);
你应该选择在特定情况下更清晰的那个。例如,以下内容是合法的,但不明确
foreach my $word (@words) {
if ($word eq 'end') { last; }
print "$word\n";
}
这隐藏了last(就像break, 并且结束循环) 在右边。相反,使用后缀if:
foreach my $word (@words) {
last if $word eq 'end';
print "$word\n";
}
布尔表达式条件可以包含下一节中介绍的任何一个比较运算符。
可以使用布尔表达式运算符将多个条件一起检查
- &&- 逻辑与,C 风格;用于大多数条件
- and- 逻辑与,但优先级较低;用于流程控制
- ||- 逻辑或,C 风格;用于大多数条件
- or- 逻辑或,但优先级较低;用于流程控制
- !- 逻辑非,C 风格
- not- 逻辑非,但优先级较低
if (($x == 20) || (($x > 0) && ($x < 10) && !($x == 5))) {
print "x is equal to 20 or either between 0 and 10, but not 5.\n";
}
条件语句也可以使用elsifandelse结构进行扩展
if (''boolean expression 1'') {
''statement 1;''
} elsif (''boolean expression 2'') {
''statement 2;''
} else {
''statement 3;''
}
注意,一个if语句后跟任意数量(包括零)个elsif语句,最后是一个可选的else语句。一个elsif的语句将被执行,如果它的布尔表达式为真,并且没有前面的(els)if语句的布尔表达式为真。尾随的else(如果存在) 将被执行,如果前面的所有语句的布尔表达式都不为真。
如果你想将条件语句缩短成一行,你可以使用快捷语法
这段代码在一行中使用了简写语法。
$whatExists 将等于 'exists',如果$foo在之前定义,否则等于 'does not exist'
my $bar = 'exists';
my $whatExists = (exists $foo) ? $bar : 'does not exist';