跳转到内容

Perl 编程/条件语句

来自维基教科书,开放的书籍,开放的世界
先前: 注释 索引 接下来: 控制流

条件语句

[编辑 | 编辑源代码]

theif语句

[编辑 | 编辑源代码]

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(如果存在) 将被执行,如果前面的所有语句的布尔表达式都不为真。

简写if ... else符号

[编辑 | 编辑源代码]

如果你想将条件语句缩短成一行,你可以使用快捷语法

这段代码在一行中使用了简写语法。
my $bar = 'exists';

my $whatExists = (exists $foo) ? $bar : 'does not exist';
$whatExists 将等于 'exists',如果$foo在之前定义,否则等于 'does not exist'


先前: 注释 索引 接下来: 控制流
华夏公益教科书