|
珞珈山水BBS →
电脑网络 →
操作系统 →
单文区文章阅读
|
| 单文区文章阅读 [返回] |
|---|
|
发信人: wys0920 (好吃懒做加菲猫), 信区: OS 标 题: 第八课 控制结构(2)-循环控制 发信站: 珞珈山水 ( 2004年08月13日12:29:20 星期五), 站内信件 循环性控制结构 任何一种语言没有循环就是不完整的。Perl也是如此,它可以用while, do...while, for, until, foreach来实现。 循环中还可以用last,next,redo等操作符进行控制。 指令: while 当.. 语法: while(判别运算式) 程序叙述区块; } 上个语法在Perl中也可以写成: 程序叙述区块while(判别运算式); 范例一: while($<=10) { $sum+=$i; $i++; } print"$sum\n"; #此时$sum =55; 范例二: $filename="/path/cgi.txt"; open(FILE,"$filename")||die "Cannot open $filename\n"; #可以把<FILE>视为打开文件某一行的数据 while($line=<FILE>) { print "$line"; } close(FILE); 就会把cgi.txt这个文件的内容显示出来。 而这个范例可以把它改写成: $filename="/path/cgi.txt"; open(FILE,"$filename")||die "Cannot open $ filename\n"; print "$line"while($line=<FILE>); close (FILE); 在这个范例中是把$filename文件内的数据一行一行的指派给$line这个纯量变量,再把$li ne显示出来.如果没有将<FILE>指派给一个纯量变量的话,则会有一内定的输入变量$_被<F ILE>所指派.因为$_是一个内定的变量,所以如果使用print函数的时候没有加上要输出数据 的话,就会把$_的数据 print出来.所以这个范例也可以改写成: $filename="/path/cgi.txt"; open(FILE,"$filename")Ⅱdie"Cannot open $ filename\n"; while(<FILE>) { print; } close(FILE); 指令: do while 当.. 语法: do { 程序叙述区块; }while(判别运算式); 在while和do while循环中最大的不同是在do while循环中,程序叙述区块至少会被执行一 次。 范例: do{ $sum+=$i; $i++; }while($i<=10); print "$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<=10;$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和所对应的值(valu e)一一显示出来.而以上这个程序也可写成: %FORM=("name","NCTU","value","TEM"); @array=(sort keys%FORM); foreach $pair(@array) { print "$pair is $FORM{pair}\n"; } 指令: last 退出循环陈述 语法: last 范例: for($i=1;$i<=10;$i++) { last if ($i==5); #如果$i等于5的话就退出for循环 print"$i\n"; } 会把1到4之间的数值显示出来. 指令:next 到循环的下一个陈述 语法:next 范例: for($i<=10;$i++) { #如果是2的倍数的话,就到循环的下一个陈述 next if($i%2)==0) print"$i是一个奇数!\n"; } 会把1以10之间的奇数显示出来。 -- 欢迎大家光临奥运会版面,参与奥运竞猜 http://202.113.16.117/upload/file/1092022471garfieldas.jpg ※ 来源:.珞珈山水 http://bbs.whu.edu.cn ◆ FROM: 222.132.243.214 |
| [返回单文区目录] |
|
|