循环流程控制

  指令:while当.. 语法:while(判别运算式){      程序叙述区块;    }   上个语法在Perl中也可以写成:   程序叙述区块while(判别运算式); 范例一:   while($i<=10){     $sum+=$i;     $i++;   }   print"$sum\n";  #此时$sum=55; 范例二:   $filename="/path/cgi.txt";   open(FILE,"$filename")||die"Can not open $filename\n";   #可以把视为在打开文件中某一行的数据   while($line=){     print"$line";   }   close(FILE);   就会把cgi.txt这个文件的内容显示出来。而这个范例可以把它改写成:   $filename="/path/cgi.txt";   open(FILE'"$filename")||die"Can not open $filename\n";   print"$line"while($line=);   close(FILE);   在这个范例中是把$filemme文件内的数据一行一行指派给$line这个纯量变量,再 把$line显示出来。如 果没有将指派给一个纯量变量的话,则会有一内定的 输入变量$_被所指派。因为$_是一个内定 的变量,所以如果使用print函数 的时候没有加上要输出数据的话,就会把$_的数据print出来。所以这个范例 也可 以改写成:   $filename="/path/cgi.txt";   open(FILE,"$filename")||die"Can not open $filename\n";   while(){     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 until 直到...才 语法:do{     程序叙述区块;    }until(判别运算式); 范例:   do{     $sum+=$i;     $i++;   }until($i>l0); ;   print"$sum\n";#此时$sum=55; 指令:for循环陈述 语法一:for(初始化运算式,判别运算式;循环过程运算式){       程序叙述区块;      } 范例一:   $sum=0;   for($i=l;$i<$i++){     $sum+=$i;   print"$sum\n";    #此时$sum=55; 范例二:   @array=(3,6,9);   $number=@array:   #把数组@array的元素个数指派给$number              #此时$number=3;   for($i=0;$ibr>     $sum+=$array[$i]:#把数组@array元素的值全部加起来
  }
语法二:for$variab1e(@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=l8;   也可以写成:   @array=(3,6,9);   foreach(@array){     $sum+=$_;   }   print"$sum\n";#此时$sum=18; 范例二:   %F0RM=("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","vaiue","TEM");   @array=(sortkeys%F0RM);   foreach $pair(@array){     print"$pairis$F0RM{$pair}\n";   } 指令:last 退出循环陈述 语法:last 范例:   for($i=1;$i>=l0;$i++){     last if ($i==5); #如果$i等于5的话就退出for循环     print"$i\n";   }   会把l到4之间的数值显示出来。 指令:next到循环的下一个陈述 语法:next 范例:   for($i=l;$i<=10;$i++){     #如果是2的倍数的话,就到循环的下一个陈述     next if (($i%2)==0)     print"$i是一个奇数!\n";   }   会把1到10之间的奇数显示出来。