在 Perl 中有 4 种假值:
最后一个为假值是因为 在数字上下文中将变成 0,根据第三条规则,它是假值。
后缀控制
简单的 if
或 unless
块可能看起来像这样:
if ($is_frobnitz) {
print "FROBNITZ DETECTED!\n";
}
在这些情况下,if
或 unless
能够追加到简单语句的尾部。
print "FROBNITZ DETECTED!\n" if $is_frobnitz;
die "BAILING ON FROBNITZ!\n" unless $deal_with_frobnitz;
while
和 for
也可以这样用。
print $i++ . "\n" while $i < 10;
for
循环有三种风格。
do 块
do
允许 Perl 在期待语句的位置使用块。
open( my $file, '<', $filename ) or die "Can't open $filename: $!"
但如果你需要做别的事:
open( my $file, '<', $filename ) or do {
die "Aborting: Can't open $filename: $!\n";
};
下列代码也是等价的:
if ($condition) { action(); }
do { action(); } if $condition;
作为特殊情况,while
至少执行块一次。
如果你从其他语言而来,你可能用过 case
语句。Perl 没有它们。
最接近的我们有 elsif
:
if ($condition_one) {
action_one();
}
elsif ($condition_two) {
action_two();
}
...
else {
action_n();
}
given … when
从 Perl 5.10.1 开始,你可以使用下列代码来打开实验性的 switch
特性:
given ($var) {
when (/^abc/) { $abc = 1 }
when (/^def/) { $def = 1 }
when (/^xyz/) { $xyz = 1 }
default { $nothing = 1 }
}
考虑以下循环:
$i = 0;
while ( 1 ) {
last if $i > 3;
$i++;
next if $i == 1;
redo if $i == 2;
}
continue {
print "$i\n";
输出:
next
跳到块尾并继续或重新开始。
redo
立即跳回到循环的开头。
跳到块尾并阻止循环再次执行。