=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. " 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 "; } foreach和for间的秘密关系: for(1..10) { print "I can count to $_! "; } foreach my $i (@array) { } 循环控制: last 跳出循环,类似c中的break next 不执行下面的指令然后跳到循环的结尾,类似c中的continue redo 不执行下次迭代,还是本次迭代,而next会进行下次迭代 带标签的块: 当在内层循环控制外围循环时要用标签 LINE:while(<>) { foreach(split) { last LINE if /__END__/; #跳出标签为LINE的循环 ... } } 三目操作符: ?: 逻辑操作符:and && or || 定义或操作符: 使用部分求值操作符的控制结构: 就是连起来用 =cut