=pod
第十章 其他控制结构
unless控制结构:和if相对
在条件为假时想要运行代码块,就用unless否则就用if:
unless(judge){ }
伴随unless的else子句:
unless(){ } else { }
until控制结构:
until($j > $i)
{
$j *= 2;
}
until在条件为假时重复执行,直到为真为止,和while相对。
表达式修饰符:
为了进一步简化代码书写,表达式后面可以接一个用于控制它行为的修饰符。
print "$n is a negative number.\n" if $n < 0;
先判断$n是否大于0,也就是说后面的判断会先执行
&error("Invalid input") unless &valid($input);
$i *= until $i > $j;
print " ", ($n += 2) while $n < 10;
&greet($_) foreach @person;
在使用foreach修饰符的时候无法自选控制变量,必须使用$_。这通常不是问题,不过若真需要自选控制变量,可以用老式的foreach循环改写
裸块控制结构:
所谓的裸块就是没有关键字或条件表达式的代码块,只是一个花括号给包裹起来
{ 裸块 }主要是为了限定变量的作用域
elsif子句:
if() { } elsif() { } else { }
perl常见问题集(参阅perlfaq文档)列出了一堆关于如何模拟case或switch的建议,perl5.10或则更高版本的用户可以选择使用第十五章中介绍的given-when结构作为交通方式。
for控制结构:
for(my $i = 0; $i < 10; $i++) { }
for($_ = "bedrock"; s/(.)//;)#当s///这个替换成功时,循环继续
{ print "One character is: $1\n"; }
foreach和for间的秘密关系:
for(1..10) { print "I can count to $_!\n"; }
foreach my $i (@array) { }
循环控制:
last 跳出循环,类似c中的break
next 不执行下面的指令然后跳到循环的结尾,类似c中的continue
redo 不执行下次迭代,还是本次迭代,而next会进行下次迭代
带标签的块:
当在内层循环控制外围循环时要用标签
LINE:while(<>)
{
foreach(split)
{
last LINE if /__END__/; #跳出标签为LINE的循环
...
}
}
三目操作符: ?:
逻辑操作符:and && or ||
定义或操作符:
使用部分求值操作符的控制结构:
就是连起来用
=cut
转载于:https://www.cnblogs.com/v-BigdoG-v/p/7398614.html