表达式真假值:
假值:逻辑值为假;值为 0;字符串为空'';列表为空;undef。
其他情况为真值。
if条件语句:
if(表达式){
语句}
elsif(表达式) {
语句}
...
else{
语句}
空格忽略,断行可以不同;
elsif和else部分可以省略;
注意elsif关键字;
语句块{}必须有,但可以空;
可以嵌套;
unless条件语句:
unless(表达式){语句}
与if条件含义相反。为真时退出,表达式为退出条件。
while循环语句:
while(表达式){语句}
do{语句}while(表达式)
while(表达式){语句}continue{语句}
单行语句 while(表达式)
until循环语句:
until(表达式){语句}
do{语句}until(表达式)
until(表达式){语句}continue{语句}
单行语句 until(表达式)
for循环语句:
for(表达式1;表达式2;表达式3){语句}continue{语句}
foreach循环语句:
foreach $w(列表或数组){语句}continue{语句}
() 内为数组@a,或列表(1,2,3);
$w 可以是新变量,也可以是已使用的变量。在循环结束后变量值恢复;
每次循环把列表或数组中的值依次赋与 $w,直到列表为空。可以不必关心数组长度;
如果在循环体中修改 $w 的值,则相应的数组元素值也改变;
当列表中是常量时,$w 的值不能修改;
$w 和 @a 可以相同,如$a(@a);
for和foreach可以互换,通用。
foreach形式:
foreach $a(@a){} 一般形式;
foreach $a(1,2,3,4){} 列表;
foreach $k(keys%h){} 散列形式;
foreach $a(@a[1,2,3]){} 只对数组的部分元素;
foreach (@a){} 省略循环变量,缺省为 $_
$_ 缺省变量。print; 为打印 $_ 变量。
循环控制语句:
last:退出循环;
next:执行下一循环。循环中Next下的语句本次不执行。对于for要执行变量自增;
redo:重新执行本次循环,对于for不执行变量自增。在do语句中无效;
goto:跳转。不能跳转到循环或子程序内。不建议使用。
continue语句块:
紧跟在循环语句后,在循环体执行完,下一次条件判断之前执行;
也可用于由 {} 标识的语句块之后;
从last跳出后不执行。但next执行。
标记语句块:
标记只能由字母和下划线组成,一般为大写,由:分隔。
标记定义:定义在循环语句前或语句前(goto),如while,for
跳转到标记:last | next | redo | goto LABEL;
一般用到嵌套循环的内层跳到最外层时。其中last是退出最外层循环,程序继续向下走,不是跳转到最外层再执行。
单行条件与循环语句:
条件语句:语句在前,条件在后。print $a if $a=0;但是先测试条件再执行语句。
同理:
unless:print $a unless($a==0);
while :print $a while($a--==0);
until :print $a until($a--=0);注意循环语句不要丢失控制变量,造成死循环。
用||,&&的条件语句:$a==0&&print $a;
open(F,'file')||die "can't open";
die函数:在控制台标准错误输出信息后退出程序。
warn:输出信息后不退出程序,只起警报作用。
$!:内部变量包含错误代码。
$@:内部变量包含错误信息。
阅读(454) | 评论(0) | 转发(0) |