您的位置:寻梦网首页编程乐园Perl 编程PERL CGI简介及指令示范
PERL CGI简介及指令示范


循环流程控制


指令: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";
  #可以把<FILE>视为在打开文件中某一行的数据
  while($line=<FILE>){
    print"$line";
  }
  close(FILE);
  就会把cgi.txt这个文件的内容显示出来。而这个范例可以把它改写成:
  $filename="/path/cgi.txt";
  open(FILE'"$filename")||die"Can not open $filename\n";
  print"$line"while($line=<FILE>);
  close(FILE);
  在这个范例中是把$filemme文件内的数据一行一行指派给$line这个纯量变量,再
把$line显示出来。如
果没有将<FILE>指派给一个纯量变量的话,则会有一内定的
输入变量$_被<FILE>所指派。因为$_是一个内定
的变量,所以如果使用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;$i<ber;$i++){
    $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之间的奇数显示出来。

上一篇 目录 下一篇