Perl循序渐进 | ||||||||
目 录 | 第一章 | 第二章 | 第三章 | 第四章 | 第五章 | 第六章 | 附录一 | 附录二 |
四、Perl 语言的控制结构 选择性控制结构包括if和unless语句,类似于C语言中的if。 首先介绍一下真和假的定义。在Perl中,这些规则有些难以理解。控制表达式的值为空串或0时,则表达式为假, 对于其它任何情况,表达式的值都为真。 注意:"00"不是空串或0,值为真。"0.0"也是如此。 指令: if 假如 语法一: if(判别运算式) 表达式为真时的语句块; } 上个语法在Perl中也可以写成: 表达式为真时的语句块 if (判别运算式); 范例: print"请输入您的分数?\n";
} 也可以写成: print "您的分数及格了!\n" if ($score>=60); 语法二: if(判别运算式一){
}else{
} 范例: print"请输入您的分数?\n";
}else{
} 语法三: if (判别运算式一)
}elsif(判别运算式二){
}elsif(判别运算式三){
}else{
} 范例: print"请输入您的分数?\n";
}elsif ($score<60){
}else{
} 指令: unless 假如非 unless的含义就是说“如果判别式不为真,就执行...”。 语法一: unless(判别运算式) {
} 上个语法在Perl中也可以写成:判别式为假时语句块 unless (判别运算式); 范例: print"请输入您的分数?\n";
} 也可以写成: print"您的分数及格了!\n"unless($score<60); 语法二: unless(判别运算式)
}else{
} 范例: print"请输入您的分数?\n";
}else{
} 进阶技巧:&&,||及?:作为控制结构 它们看上去像标点符号,或是表达式的一部分。但在Perl中可作为控制结构。 比如说: 也可以写为: 但更简单的方式是:
为什么呢?&&为逻辑与操作符,其含义为:
同样道理,unless(this){that}可替换为this||that。 任何一种语言没有循环就是不完整的。Perl也是如此,它可以用while, do...while, for, until, foreach来实现。 循环中还可以用last,next,redo等操作符进行控制。 指令: while 当..
} 上个语法在Perl中也可以写成: 程序叙述区块while(判别运算式); 范例一: while($<=10)
} print"$sum\n"; #此时$sum =55; 范例二: $filename="/path/cgi.txt";
} close(FILE); 就会把cgi.txt这个文件的内容显示出来。 而这个范例可以把它改写成:
在这个范例中是把$filename文件内的数据一行一行的指派给$line这个纯量变量,再把$line显示出来.如果没有将<FILE>指派给一个纯量变量的话,则会有一内定的输入变量$_被<FILE>所指派.因为$_是一个内定的变量,所以如果使用print函数的时候没有加上要输出数据的话,就会把$_的数据print出来.所以这个范例也可以改写成:
$filename="/path/cgi.txt";
} close(FILE); 指令: do while 当.. 语法: do
}while(判别运算式); 在while和do while循环中最大的不同是在do while循环中,程序叙述区块至少会被执行一次。 范例: do{
}while($i<=10); 指令: until 直到...才 语法: until(判别运算式)
} 上个语法在Perl中也可以写成: 程序叙述区块 until (判别运算式); 范例: until($i>10){
} print "$sum\n"; #此时$Sum=55; 指令: do while 直到...才 语法: do{
}until (判别运算式); 范例: do{
}until($i>10); print "$sum\n"; #此时$sum=55; 指令: for 循环陈述 语法一: for (初始化运算式;判别运算式;循环过程运算式)
} 范例一: $sum=0;
} print "$sum\n"; #此时$sum=55; 范例二: @array=(3,6,9);
} print"$sum\n"; #此时$sum=18; 语法二: for $ variable(@array)
} 在Perl语言中的for循环陈述还可以使用这个语法,各循环陈述foreach的用法一样.如果把$variable变量省略的话,就会将数组@array的元素一个一个指定给$_这个变量,这是比较精简的写法. 范例: @array=(3,6,9);
} print"$sum\n"; #此时$sum=18; 也可以写成: @array=(3,6,9);
} print"$sum\n"; #此时$sum=18; 指令: foreach 循环陈述 语法: foreach $ variable(@array)
} 如果把$variable变量省略的话,就会将数组@array的元素一一指定给$_这个内定的输出变量. 范例一: @array=(3,6,9);
} print "$sum\n"; #此时$sum=18; 也可以定成: @array=(3,6,9);
} print "$sum\n"; #此时$sum=18; 范例二: %FORM=("name","NCTU","value","TEM");
} 这个范例在CGI语言写作中常常会用到.先用keys喧个函数来求出关联数组中全部的key,再用sort这个函数把全部的key由小到大排序,最后再把关联数组中的key和所对应的值(value)一一显示出来.而以上这个程序也可写成: %FORM=("name","NCTU","value","TEM");
} 指令: last 退出循环陈述 语法: last 范例: for($i=1;$i<=10;$i++)
} 会把1到4之间的数值显示出来. 指令:next 到循环的下一个陈述 语法:next 范例: for($i<=10;$i++)
} 会把1以10之间的奇数显示出来。 |
[content]