Perl条件语句if和unless,它们允许你控制脚本的执行。if语句有五种不同的格式:
if (EXPR) if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK ... if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK STATEMENT if (EXPR)
第一种格式被归类为一个简单的语句,因为它可以在另一份声明中使用,无需在块中,如:
print "Happy Birthday!\n" if ($date == $today);
在这种情况下,如果表达式计算为一个真值(true),该消息将被打印。
第二种格式是比较熟悉的条件语句,你可能从其他语言的跨过来学习:
if ($date == $today) { print "Happy Birthday!\n"; }
这将产生相同的结果和前面的例子。
第三种格式允许异常。如果表达式为true,则执行的第一个块,否则(else),第二块被执行:
if ($date == $today) { print "Happy Birthday!\n"; } else { print "Happy Unbirthday!\n"; }
第四种形式,允许额外的测试,如果第一个表达式不返回true,elseif语句可以要求重复无限次测试许多不同的方案:
if ($date == $today) { print "Happy Birthday!\n"; } elsif ($date == $christmas) { print "Happy Christmas!\n"; }
第五形式,如果所有其他测试失败允许额外的测试和最后的异常:
if ($date == $today) { print "Happy Birthday!\n"; } elsif ($date == $christmas) { print "Happy Christmas!\n"; }else { print "Happy Unbirthday!\n"; }
unless 语句自动隐含如果(if),所以unless expr是真则执行块的逻辑相反。
print "Happy Unbirthday!\n" unless ($date == $today); is equivalent to print "Happy Unbirthday!\n" if ($date != $today);
例如,下面与前面IF ... ELSE是一个不太优雅的解决方案,虽然达到了相同的结果,例如:
unless ($date != $today) { print "Happy Unbirthday -by www.gitbook.net!\n"; } else { print "Happy Birthday!\n"; }
最后的条件语句实际上是一个操作符。有条件的运算符,这是IF ... ELSE条件语句的代名词,但更短更紧凑。供操作的格式是:
(expression) ? (statement if true) : (statement if false)
例如,我们可以效仿前面的例子如下:
($date == $today) ? print "Happy B.Day!\n" : print "Happy Day!\n";