Perl IF...ELSE (条件判断)
Perl 条件语句 - if/else, unless
Section titled “Perl 条件语句 - if/else, unless”Perl 中的条件语句允许你的程序做出决策。它们根据指定条件是真 (true) 还是假 (false) 来执行不同的代码块 (block)。
在 Perl 的布尔上下文 (boolean context) 中:
- 数字
0 - 字符串
'0'和""(空字符串) - 空列表
() - 特殊值
undef
都被视为 假 (false)。所有其他值都被视为 真 (true)。
Perl 提供了以下主要的条件语句类型:
| 语句 | 描述 |
|---|---|
if 语句 | 如果条件为真,则执行代码块。 |
if...else 语句 | 如果条件为真,则执行一个代码块;如果条件为假,则执行另一个代码块。 |
if...elsif...else 语句 | 按顺序测试多个条件。执行第一个为真的条件对应的代码块,如果所有条件都为假,则执行 else 代码块。 |
unless 语句 | 如果条件为假,则执行代码块(与 if 相反)。 |
unless...else 语句 | 如果条件为假,则执行一个代码块;如果条件为真,则执行另一个代码块。 |
unless...elsif...else 语句 | 类似于 if...elsif...else,但初始条件被否定。elsif 条件正常评估。(注意:unless...elsif 有时可能令人困惑;通常重构为 if 更清晰)。 |
基本的 if 语句结构:
if (condition) { # 如果条件为真,则执行此代码}基本的 if...else 语句结构:
if (condition) { # 如果条件为真,则执行此代码} else { # 如果条件为假,则执行此代码}基本的 if...elsif...else 语句结构:
if (condition1) { # condition1 为真时执行的代码} elsif (condition2) { # condition1 为假且 condition2 为真时执行的代码} else { # 所有先前条件都为假时执行的代码}基本的 unless 语句结构:
unless (condition) { # 如果条件为假,则执行此代码}三元运算符 ? :
Section titled “三元运算符 ? :”Perl 还提供了一种简洁的条件运算符,即三元运算符 ? :。这是一个根据条件求值为两个值之一的表达式。其一般形式为:
condition ? expression_if_true : expression_if_false;如果 condition 为真,整个表达式求值为 expression_if_true。如果 condition 为假,则求值为 expression_if_false。
使用三元运算符的示例:
#!/usr/bin/perluse strict;use warnings;
my $name = "Ali";my $age = 10;
my $status = ($age > 60) ? "a senior citizen" : "not a senior citizen";
print "$name is $status.\n";
$age = 70;$status = ($age > 60) ? "a senior citizen" : "not a senior citizen";print "$name is now $status.\n";这将产生以下结果:
Ali is not a senior citizen.Ali is now a senior citizen.短路求值 (Short-circuit evaluation):Perl 的逻辑运算符 && (AND) 和 || (OR) 使用短路求值,也可用于条件执行,尽管对于复杂逻辑来说,专门的 if 语句通常更易读。
# 条件执行的短路示例# (条件 && 如果为真则执行的操作)# (条件 || 如果为假则执行的操作)
my $debug_mode = 1;$debug_mode && print "Debugging is ON.\n";
my $user_input = "";$user_input || print "User input is empty!\n";