learning perl(三) 控制结构

learning perl(三) 控制结构,第1张

概述perl的控制结构主要有六种,下面我们一一来了解。 0.if () {} else (){} 就不说了啊。 1.while(condition){ do_something; } while 循环与C++中的没有什么区别,满足条件就一直执行,否则跳出循环。 不过有时候可以这么用: my $flag = true; while ($flag) { if (condition){ $flag = fa 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 "$val\n";

}

循环会改变列表本身的值,比如@arr,但是不会改变控制变量的值,比如$val。使用for可以像C++中一样,比如依次输出十个数:

for ($i = 1; $i <= 10; $i++){

print "$i\t";

}

使用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 $!;

怎么样,很简洁吧!

其中的or叫做条件修饰符,还可以使用if while 等,这些控制结构如果放在后面就叫条件修饰符,有时候会非常方便,也很省事,毕竟可以不用写{ }了。


 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 对应的值,否则返回右面的值。

总结

以上是内存溢出为你收集整理的learning perl(三) 控制结构全部内容,希望文章能够帮你解决learning perl(三) 控制结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1277710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存