1.unless控制语句
unless(条件表达式){};
当条件为假时执行表达语句;
2.伴随unless的else
不建议采用,因此不列出。
3. until控制结构
until(条件表达式){};
当条件为真时,停止执行;为假时,循环执行。
注意:先判断表达式里的值后执行循环
4. 表达修饰符:
在表达式语句后接一个控制其行为的修饰符:
ex:
print"$n is a number" if $n<0;
先执行控制语句,后执行表达式,适用于,unless,until,while,foreach(无法自主选择变量,只能使用$_)。
5.裸块控制语句
采用{待执行语句},运行时会将其中语句执行一次:
优点:定义局部变量
6.elsif
if(){} elsif(){}
对elsif的个数没有限制;
7.自增和自减
对于标量变量中采用的自增或者自减;
$m++;表示将$m的值+1;
这个一般用在哈希创建中:
my @people = qw(a,b,c,d,e);
my %hash;
$hash+{$_}++ foreach(@people);
这个表示键值分别为a,b,c,d,e值分别为1.2.3.4.5;
其次,在使用自增或自减赋值时有两种用法:
$a = $b++;表示先把$b的值给$a,再自增
$a=++$b;表示先自增,$a=$b+1;
自减用法相同;
8.for控制语句
for (初始化;测试;递增){程序主体};
任何一部分都不是必须的;
等于
初始化;
while(测试){程序主体;递增};
9. 循环控制
a. last操作符
类似于break,当看到last跳出当前循环;
b. next操作符
跳过他后面的语句,执行在一次循环;
ex. 统计单词个数:
while()<>{
foreach (spilt){
$total++;
next if(/\W/);
$valid++;
$count{$_}++;#单词为键,数字为值,当 #出现单词时,对应的数字+1,从而统计出字数
}
}
print"total is $total,valid is $valid";
foreach $word(sort keys %count){
print "$word is seen $count{$word}";
}
c. redo操作符
相当于直接调回当次循环的开始,再次开始循环,但在redo之前执行的语句是有效的。
10. 带标签的块
采用大写字母,_和数字为循环起一个名字(标签),然后用在last,next,redo后面,比如
LINE: while(){
....;
last LINE if (条件);
}
11. 条件操作符
三目操作符:
条件表达式?表达式1:表达式2;
如果真的话,就执行表达式1,不然执行表达式2!
12. 逻辑操作符
与&&,或||,逻辑操作符!返回值是布尔值:1或者0.
或者写成and or
13.定义或操作符
//——定义或操作符,用于给变量提供默认值:
比如:
my $name = $hash{$hah}//'jim';表示当hah不存在于哈希时候,取后面的jim作为默认值
总结:
本节描述了新的perl的控制结构,可以在执行过程中丰富脚本组织结构。