perl基础---循环控制

Posted EasyPerl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl基础---循环控制相关的知识,希望对你有一定的参考价值。

在编程中, 我们往往需要进行不同情况的判断, 选择, 重复操作。这些时候我们需要对简单语句来添加循环控制变量或者命令。


if/unless 

我们需要在满足特定条件下再执行的语句, 可以通过if/unless(else)来控制:

my $num = 5;if ($num >= 3){ print "biger than or equal 3\n";}else{ print "less than 5\n";}

unless ($num == 5){ print "not equal 5\n";}else{ print "equal 5\n";}

print "$num is 5\n" if $num == 5;

一般对于只有一个执行语句的情况, 我们可以根据需要将if/unless后置,这样代码可以更简洁。

需要特殊指出的是, 在Perl中 数字0, 空字符'', 以及undef都会被判定为false。


while/until

我们需要在某一条件进行重复操作时, 可以使用while/until

my $num = 5;while($num <= 15){ $num++;}continue { print "$num\n";}

continue块每次循环都会执行, 哪怕退出了该循环。


for/foreach

但明确循环次数时, 我们一般使用for循环(for等效foreach),

Perl也支持其他语言的3条件for, 但一般不推荐也不用

for(my $i = 0; $i < 10; $i++){....}

perl中经常使用的方式

my @nums = (1,2,3,4,5,6,7);for my $num(@nums){ print "$num\n";}

这种方式, 我们不需要设置过多的条件, 只需要依次迭代所有的元素即可, 代码维护性也更强


在循环中, 我们可以使用last next redo来控制单次/整个循环

在没有标签的情况下:

last:退出并结束当前循环(如多层循环, 则只退出最内层)

next: 退出并结束当次循环, 并开始下次循环

redo: 重新开始当次循环


在有标签的情况下, 会直接忽略代码所在的层次, 直接根据标签的层次来计算。


perl中没有 switch(case), 因为不需要, perl可以很容易的通过多种方法来达到switch(case)的效果。


以上是关于perl基础---循环控制的主要内容,如果未能解决你的问题,请参考以下文章

Perl 基础语法

perl 第14弹 循环控制

perl 第14弹 循环控制

如何有条件地将 C 代码片段编译到我的 Perl 模块?

perl循环控制

Perl黑客编程