加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

learning perl(三) 控制结构

发布时间:2020-12-15 23:59:55 所属栏目:大数据 来源:网络整理
导读:perl的控制结构主要有六种,下面我们一一来了解。 0.if () {} else (){} 就不说了

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

怎么样,很简洁吧!

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读