learning perl(三) 控制结构
perl的控制结构主要有六种,下面我们一一来了解。
0.if () {} else (){} 就不说了啊。 1.while(condition){ do_something; } while 循环与C++中的没有什么区别,满足条件就一直执行,否则跳出循环。 不过有时候可以这么用: my $flag = true; while ($flag) { if (condition){ $flag = false; } do_something; } 看个人喜好吧
2.foreach 与 for 循环。在C++中只有for,但在perl中for与foreach等价,foreach能依次遍历列表的值,比如输出数组中的所有元素,可以这样写: foreach my $val(@arr) { print "$valn"; } 循环会改变列表本身的值,比如@arr,但是不会改变控制变量的值,比如$val。使用for可以像C++中一样,比如依次输出十个数: for ($i = 1; $i <= 10; $i++){ print "$it"; } 使用foreach 可以这样: foreach (1..10) { print "$_t"; } 你会使用哪个呢?其中'1..10'代表从1依次到十,当然,for与foreach其实等价,使用哪个都可以。 大多数时候,使用while 和 foreach 足以完成任务,但是有下面的几个小伙伴的加入,完成任务会更加的有乐趣。 3.unless 控制结构。unless可以看做if 的反面,比如判断打开文件是否成功,可以这样使用if: if (! open HD,"< file_input") { die "Can't open."; } 使用unless,可以这样: unless (open HD,"< file_input") { die "Can't open"; } 当然,有很多不同的方法都可以达到相同的目的,比如第三种: open HD,"< file_input" or die $!; 怎么样,很简洁吧! ?4.until 控制结构。if 有一个反面的 unless,那么while理所当然的就有了until控制结构。与while 唯一的差别就是until 在条件为假时一直执行,否则跳出循环。多数情况下个人比较喜欢用while,就不举例子了。 5.裸块控制结构。 所谓裸块控制结构,就是没有多余的东西,只有大括号,像这样的: { do_something; } 在裸块中的语句只执行一次,其中定义的全都是属于局部变量,有时候会很有用。 有了这些控制语句,就像一个人有了骨骼的支撑,更加的健壮,那么如何提早跳出循环或者进入下一次循环呢,接着往下看。 6.循环控制。 a) last.它的作用是立刻终止最近的一个循环,也就是跳出这个循环,接着执行后面的语句。与C++中的break相同。 b) next. 立即结束本次循环,跳过之后的语句,开始下一次循环。与C++中的continue相同。 c) redo. 立即结束本次循环,跳过之后的语句,到达循环的最顶端,相当于从头再次执行这次循环,而不是下一次循环。 d) 标签。上面所说的都只是对最内层的循环就行处理,如果想跳到外层循环,该怎么办?放心,有标签可以使用: HAHA: while (condition1) { while (condition2) { last HAHA if (condition3); } } 标签的名字可以随便命名,不过一般采用容易识别的大写字符比较好。 另外,perl中也有自增(++)自减(--)操作符,也分前后,与C++相同,在前面,先加减,再赋值,后面是先赋值,再加减。也有三目操作符? : 。还有逻辑与&&和逻辑或||,所不同的是,逻辑或操作符||的返回值是最后计算的那部分的值,比如: my $last_name = $last_name{$some} || 'No last name'; 如果$some在%last_name中存在,那么就返回$some 对应的值,否则返回右面的值。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |