如何利用程序循环来控制Perl脚本流程
时间:2008-04-14 来源:剑心通明
了解
[url=javascript:;]Perl[/url]
语句、变量和运算符的基础知识,并建立第一个简单的程序后,您希望进一步深入
[url=javascript:;]学习[/url]
。您能学会的最重要的一项内容是控制Perl程序流程——例如,根据不同的情况分离代码,或重复运行代码块,对一个特定的数据组进行全面探查。
本文将介绍后一种情况,为您说明允许您重复执行一组Perl语句的各种Perl结构。这种重复执行叫做循环,这些循环在大多数Perl脚本中发挥着重要作用。下面我们来进行说明。
While循环
Perl中最基本的循环为所谓的while()循环,它允许您在一个特定的条件保持为真的情况下,重复执行一组语句。这个条件是一个标准的Perl条件表达式,可由解析器计算它的值,再返回真或假值。下面是一个简单的例子(列表A):
列表A
#!/usr/bin/perl
# define number array
@nums = (1..18);
# define counter
$count = 0;
# run loop while number is less than 12
while ($nums[$count] 1){
$fact = $fact * $num;
$num--;
}
print $fact;
这个例子用while()循环由5倒数至1,每个阶段的值与前一个阶段得到的值相乘。最后,终值为5的阶乘,或120。
Until循环
与while()循环相反的是until()循环,直到某个特定的条件为假前,循环一直执行。因此,until()循环中的条件表达式与while()循环中的表达式正好相反。下面是一个例子(列表C):
列表C
#!/usr/bin/perl
# define number array
@nums = (1..18);
# define counter
$count = 0;
# run loop while number is less than 12
until ($nums[$count] >= 12) {
print $nums[$count];
$count++;
}
我们还可以用until()循环重写阶乘的例子,如列表D所示:
列表D
#!/usr/bin/perl
# define variables
$fact = 1;
$num = 5;
# calculate and print the factorial
until($num 1; $x--) {
$fact = $fact * $x;
}
print $fact;
这个稍有不同,因为每次循环计数器变量不是递增,而是递减。这样就可以由5倒数至1,这时条件表达式为假,循环终止。$fact的结果值为5的阶乘。
Foreach循环
Foreach循环是一个有些特殊的循环——只有Perl的数组变量能够使用这个循环。该循环可以方便地重复数组的每一个元素,依次对它们进行处理。列表G是一个例子:
列表G
#!/usr/bin/perl
# define number array
@nums = (1..18);
# iterate through array elements
foreach $n (@nums) {
print "$n ";
}
这里,foreach()循环结构被提交给一个数组变量,在这个例子中它包含18个元素。循环每重复一次,当前选中的元素被分配给临时变量$n,并以某种方式进行处理(在本例中简单在终端打印)。循环继续进行,直到所有的数组元素按顺序处理完毕。
在处理数组时,foreach()循环要大大优于for()循环和while()循环,主要是因为它不需要一个计数器变量手工追踪它在数组中的位置;这个任务在内部进行处理,使这一循环在处理数组时简单而透明。
常用循环
这四个循环是Perl中最常用的循环——很少有脚本不会用到它们。希望上面的简短实例与说明能够帮助您了解它们,并开始在实际实践中加以应用。编码快乐!
相关阅读 更多 +
排行榜 更多 +