Perl 编程/条件语句
外观
< Perl 编程
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';