首页 电脑 电脑学堂 查看内容

perl程序设计(八)

2004-9-29 20:05 690 0

摘要: 循环性控制结构  任何一种语言没有循环就是不完整的。Perl也是如此,它可以用while, do...while, for, until, foreach来实现。  循环中还可以用last,next,...
关键词: 范例 sum 算式 区块 array print 语法 循环 while 判别

循环性控制结构  任何一种语言没有循环就是不完整的。Perl也是如此,它可以用while, do...while, for, until, foreach来实现。  循环中还可以用last,next,redo等操作符进行控制。指令:while 当.. 语法: while(判别运算式) { 程序叙述区块;}上个语法在Perl中也可以写成: 程序叙述区块while(判别运算式);范例一:while(${ $sum+=$i;$i++;}print"$sum\n"; #此时$sum =55;范例二:$filename="/path/cgi.txt";open(FILE,"$filename")||die "Cannot open $filename\n";#可以把视为打开文件某一行的数据while($line=){ print "$line";}close(FILE);就会把cgi.txt这个文件的内容显示出来。而这个范例可以把它改写成: $filename="/path/cgi.txt";open(FILE,"$filename")||die "Cannot open $ filename\n";print "$line"while($line=);close (FILE);在这个范例中是把$filename文件内的数据一行一行的指派给$line这个纯量变量,再把$line显示出来.如果没有将指派给一个纯量变量的话,则会有一内定的输入变量$_被所指派.因为$_是一个内定的变量,所以如果使用print函数的时候没有加上要输出数据的话,就会把$_的数据print出来.所以这个范例也可以改写成:$filename="/path/cgi.txt";open(FILE,"$filename")Ⅱdie"Cannot open $ filename\n";while(){ print;}close(FILE);指令:do while 当.. 语法:do{ 程序叙述区块;}while(判别运算式);在while和do while循环中最大的不同是在do while循环中,程序叙述区块至少会被执行一次。范例:do{ $sum+=$i;$i++;}while($iprint "$sum\n"; #此时$sum=55;指令:until 直到...才语法: until(判别运算式){ 程序叙述区块;}上个语法在Perl中也可以写成: 程序叙述区块 until (判别运算式);范例:until($i>10){ $sum+=$i;$i++;}print "$sum\n"; #此时$Sum=55;指令:do while 直到...才语法:do{ 程序叙述区块; }until (判别运算式);范例:do{ $sum+=$i;$i++;}until($i>10);print "$sum\n"; #此时$sum=55;指令:for 循环陈述语法一:for (初始化运算式;判别运算式;循环过程运算式){ 程序叙述区块;}范例一:$sum=0;for($i=1;$i{ $sum+=$i;}print "$sum\n"; #此时$sum=55;范例二:@array=(3,6,9);$number=@array; #把数组@array的元素个数指派给$number#此时$number=3;for($i=0;$inumber;$i++){ $sum+=$array[$i]; #把数组@array元素的值全部加起来}print"$sum\n"; #此时$sum=18;语法二:for $ variable(@array){ 程序叙述区块;}在Perl语言中的for循环陈述还可以使用这个语法,各循环陈述foreach的用法一样.如果把$variable变量省略的话,就会将数组@array的元素一个一个指定给$_这个变量,这是比较精简的写法.范例:@array=(3,6,9);for $int(@array){ $sum+=$int;}print"$sum\n"; #此时$sum=18;也可以写成:@array=(3,6,9);for (@array){ $sum+=$_;}print"$sum\n"; #此时$sum=18;指令:foreach 循环陈述语法:foreach $ variable(@array){ 程序叙述区块;}如果把$variable变量省略的话,就会将数组@array的元素一一指定给$_这个内定的输出变量.范例一:@array=(3,6,9);foreach $int(@array){ $sum+=$int;}print "$sum\n"; #此时$sum=18;也可以定成:@array=(3,6,9);foreach(@array){ $sum+=$_;}print "$sum\n"; #此时$sum=18;范例二:%FORM=("name","NCTU","value","TEM");foreach $pair(sort keys%FORM){ print "$pair is $FORM{pair}\n";}这个范例在CGI语言写作中常常会用到.先用keys喧个函数来求出关联数组中全部的key,再用sort这个函数把全部的key由小到大排序,最后再把关联数组中的key和所对应的值(value)一一显示出来.而以上这个程序也可写成:%FORM=("name","NCTU","value","TEM");@array=(sort keys%FORM);foreach $pair(@array){ print "$pair is $FORM{pair}\n";}指令:last 退出循环陈述语法:last范例:for($i=1;$i{ last if ($i==5); #如果$i等于5的话就退出for循环print"$i\n";}会把1到4之间的数值显示出来.指令:next 到循环的下一个陈述语法:next范例:for($i{ #如果是2的倍数的话,就到循环的下一个陈述next if($i%2)==0)print"$i是一个奇数!\n";}会把1以10之间的奇数显示出来。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部