Perl中的控制结构学习笔记

2019-10-01 11:03:48王旭

(4) 若在循环体中修改$w的值,则相应的数据元素值也改变.
(5) 当列表中是常量时,$w的值不能修改.
(6) $w和@a可以相同,如$a(@a)
(7) for和foreach可以互换,通用.

foreach的形式
(1) foreach $a(@a){} 一般形式.
(2) foreach $a(1,2,3,4){} 列表
(3) foreach $k(keys%h){} 散列形式
(4) foreach $a(@a[1,2,3]){} 只对数组的部分元素
(5) foreach (@a){} 省略循环变量,缺省为$_
    $_缺省变量,print为打印$_变量.
(6) grep,map函数相当于foreach对每个元素进行操作.

八、循环控制

 last:退出循环
 next:执行下一循环,循环中next下的语句本次不执行,对于for要执行变量自增.
 redo:重新执行本次循环,对于for不执行变量自增,在do语句中无效,不建议使用.
 goto:跳转,不能跳转到循环或子程序内,现在结构化编程都不建议使用.

九、标记

标记只能由字母和下划线组成,一般为大写,由:分隔。
标记定义:定义在循环语句前或语句前(goto)
一般用到嵌套循环的内层跳到最外层时,其中last是退出最外层循环,程序继续向下走,
不是跳转到最外层再执行.

例子:

#!/usr/bin/perl
print “使用标签:”;
LABEL:for($i=1;$i<5;$i++){
        for($j=1;$j<5;$j++){
             print “$j”;
             last LABEL if $i==3;
         }
        }
print “$i=$i”;

十、continue语句块

continue{语句}

(1) 紧跟在循环语句后,在循环体执行完,下一次条件判断之前执行.
(2) 也可用于由{}标识的语句块之后.
(3) 从last跳出后不执行,但next执行.

十一、单行条件语句与循环语句

条件语句:语句在前,条件在后.print $a if $a==0;但是先测试条件再执行语句.
同理:

unless: print $a unless($a==0);
while: print $a while($a–==0);

注意:循环语句不要丢失控制变量,造成死循环.
用||,&&的条件语句:$a==0&&print $a;
                  open(F,'file')||die “can't open”;
die函数:在控制台标准错误输出信息后退出程序.
warn:输出信息后不退出程序,只起警报作用.
$!:内部变量包含错误代码.
$@:内部变量包含错误信息.

十二、小结

1.条件语句:

if (表达式){语句}
  elsif(表达式){语句}
  ….
  else{语句}

2.单行语句 if(表达式);