-
if
if()
{}
elsif()
{}
else
{}
- unless
与if相反,unless(表达式) {语句},执行语句除非表达式为真,为真时退出,表达式为退出条件
- until
until(表达式) {语句},与while相反。执行语句,直到表达式为真停止。为真时停止,表达式为退出条件。 do(语句) until(表达式)
- foreach $w(列表或数组) {语句}
()内为数组@a,或列表(1,2,3);
$w可以是新变量,也可以是已使用的变量。在循环结束后变量值恢复。
如果循环体中修改$w的值,则相应的数组元素值也改变。
当列表中是常量时,$w的值不能修改。
$w和@a可以相同,如$a(@a)。
常见形式:
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:跳转。不能跳转到循环或子程序内。
跳转到标记: last | next | redo | goto LABEL;其中last是退出最外层循环,程序继续往下走,不是跳转到最外层再执行。
OUT: while()
{
while()
{
last OUT;
}
}

#!/usr/bin/perl
print "\$a的值在循环后恢复:";
$a=1;
print $a;
foreach $a(2,3,4) {print $a;}
print $a
print "\n改变循环变量的值引起数组元素值的改变:";
@a=(1,2,3);
print @a;
foreach $c(@a) {$c=5 if $c==2;}
#foreach $c(@a) {if($c==3) $c=5;}
print @a;
print "\n可以循环访问数组的部分元素:";
@a=(1,2,3);
print @a;
foreach $c(@a[1,2]) {print $c;}
print "\n循环变量的缺省值时\$_:";
@a=(1,2,3);
foreach(@a) {print "$_";} #哪怕只有一条语句,{}也不可少
print "\nfor和foreach通用:";
foreach($i=1;$i<5;$i++) {print $i;}
<>;
print "使用标签";
LABEL:
for($i=1;$i<5;$i++)
{
for($j=1;$j<5;$j++)
{
print $j;
last LABEL if $i==3;
}
}
print $i;
- 单行语句
条件语句:语句在前,条件在后。 print $a if $a==0;
同理:循环语句
print $a unless($a==0);
print $a while($a--==0);
print $a untile($a--==0); //退出条件
$a==0 && print $a;
open(F, 'file') || die "can't open";
die函数:在控制台标准错误输出信息后退出程序。
warn:输出信息后不退出程序,只起警报作用。
$! :内部变量包含错误代码
$@ :内部变量包含错误信息。