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之间的奇数显示出来。
上一篇 目录 下一篇
|