Perl-循环控制结构

上一篇 / 下一篇  2015-01-09 07:40:58 / 个人分类:Perl

Unless控制结构
在if控制结构中,只有当条件表达式为真时,才执行某块代码,如果你想让代码块在条件为假时才执行,可以把if 改为unless. unless类似于一个独立的else语句。当unless执行条件为真时,不执行unless
下面的语句块,如果unless执行条件为假,执行后面的代码 。
unless(x=Y){
  do;
}
Unless可以跟else子句,和 if else逻辑完全相反。
unless(x=y){
do
} else{
do;
}
Until控制结构
until 类似一个改装过的while循环,untill会在条件为假时重复执行,而不是条件为真时执行。
表达式修饰符
until (x>y){
do;
}
为了进一步简化代码,表达式后面可以接一个用于控制它行为的修饰符
print "$x" if @x <0;
if($x<0){
print "$x";
}
即使条件表达式写在后面,它仍然会先执行。这与通常由左到右的顺序相反。解读perl代码的方式应该
像Perl的内部翻译器一样,先把语句全部读完再判断其含义。
裸块控制结构
所谓的裸块,就是没有关键字或条件表达式的代码块。
{
}
裸块可以为临时词法变量限定作用域。 局部变量的准则,最好把变量声明在最小使用范围之内。
elsif子句
如果需要逐项检查一系列的表达式,看看其中哪个为真,可以通过if控制结构的else子句完成此事,Perl
会一个接一个地测试这些条件表达式,当其中某项符合时,相应的程序代码块就会被执行,然后整个控
制结构结束,并执行下来的代码程序。 
If(){
} elsif {
} elsif {
}
elsif 并不是elseif.这个和其他语言不同
自增和自减
x++ 先使用x的值,然后x加
++x 先增加x的值,然后使用x的新值
x-- 先使用x的值,然后x减
--x 先减少x的值,然后使用x的新值
如果操作符在前,就先自增或自减,然后使用新值,如果变量在前,则先返回它的值,然后再自增或自减
for控制结构
for (初始化;测试;递增){
程序主体;
}
for循环最常见的用途,就是控制重复的运算过程。
foreach和for之间的关系
在Perl解析器里,foreach和for这两个关键字实际上是等价的。Perl可以从圆括号里面的内容判断出你
到底想用for还是foreach。如果里面有两个分号,他就是之前介绍的for循环,若没有分号,就说明他是
一个foreach循环
循环控制
Perl是一种所谓的结构化的编程语言,Perl的程序的任何块都只有一个入口,也就是块的顶端。
perl一共有5种循环块,for,foreach,while,until以及裸块
Last 操作符
last操作符能立即终止循环的执行,类似于c语言中的break操作符 last操作符只会对当前运行的最内层
的循环块发挥作用。
next操作符
next操作符用来挑到当前循环块的底端。结束当前这次循环迭代,在next之后,程序将会继续执行循环
的下一次迭代。 类似于c语言里的continue.
redo操作符
redo能将控制返回到当前循环块的顶端,而不经过任何条件测试,也不会进入下一次循环迭代. next和
redo的区别,next会正常继续下一次迭代,而redo则会重新执行这次的迭代
带标签的块
当需要从内层到外层的循环块进行控制时,可以使用标签。标签没有前置符号,建议名称全大写,如果
要对循环块加上标签,通常只要将标签及一个冒号放在循环前面就可以了。 标签用来命名整块代码,而
不是用来标明程序中的某个具体位置。标签并不是goto语句。
条件操作符
条件操作符类似一个if-then-else控制结构,由于使用时需要三个操作数,所以有时也成为三目操作符。

Perl执行条件表达式,如果为真,就执行冒号前面的表达式,如果为假就执行冒号后的表达式。每次使
用都会执行问号右边两个表达式中的一个,另一个则会被跳过,若条件表达式为真,则第二个表达式会
被求值并返回,而忽略第三个表达式,若条件为假,则忽略第二个表达式,而对第三个表达式求值并返回,类似于 and or中的短路逻辑。
任何使用?:操作符的表达式都可以改写成if结构
逻辑操作符
AND(与) &&  x&&y
OR(或) ||   x||y
逻辑与操作符,如果左边的表达式为假,整个表达式就不可能为真,因此不会对右边的表达式求值
逻辑或操作符,如果左边的表达式为真,则整个表达式返回真,不用对右边的表达式求值。
短路操作符的值
Perl的短路操作符求得的值不仅是简单的布尔值,而是最后运算的那部分表达式的值,常常利用逻辑或
操作符提供变量的默认取值
定义或操作符
利用或操作符提供变量的默认值,没有考虑到特殊情况,就是已定义的假值也可能被意外地替换为默认
值。比如定义变量值为0,会被认为是假值。
定义或操作符(//),在发现左边的值属于已定义时进行短路操作,而不管该值属于逻辑真还是逻辑假
使用部分求值操作符的控制结构
&&,||,//,?: 都是根据左边的值来决定是否计算右边的表达式,有些情况下会执行的表达式在另外的情况
下并不执行,因此这些操作符有时被称为部分求值操作符,部分求值操作符是天然的的控制结构。


TAG:

 

评分:0

我来说两句

Open Toolbar