跳转到内容

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'


上一页:注释 索引 下一页:控制流
华夏公益教科书