Perl结构控制语句:
if条件语句:
if (condition) {
expression;
} elsif {
expression;
} else {
expression;
}
unless条件语句:
条件为假时执行.
unless (condition) {
expression;
} elsif {
expression;
} else {
expression;
}
while循环语句:
while (condition){
expression;
}
while(1) {
…
} #死循环
until循环语句:
条件为假时才执行
until (condition) {
expression;
}
foreach循环语句:
foreach $var (@arry/list){
expression;
}
$var循环变量并不是对列表元素的复制,而是列表元素本身。
如果在foreach体中修改了循环变量也就是修改了列表中的元素。
$var循环变量在退出foreach循环后恢复原来的值。
循环变量可以省略,默认使用
$_ 来代替:
foreach (@arry/list){
print “$_”;
}
for循环语句:
perl里的for和foreach等价,可以根据条件相互转化。
for (initialization; condition; increment) {
expression;
}
for(;;) {
…
} #死循环
裸块:
{
expression;
}
last函数 :跳出循环,相当于c的break。
last LABEL/EXPR
next函数:跳出本次循环,继续下一次循环,相当于c的continue。
next LABEL/EXPR
redo函数:无条件跳转到本次循环的顶端,重新执行本次循环。
redo LABEL/EXPR
given-when控制结构:
given($var) {
when (condition) { expression }
…
default { expression }
}
多个项目的when匹配:
foreach (@arr) {
when (condition) { expression; continue }
…
default { expression}
}
break: 跳出given块
continue:继续执行下一句
条件修饰词:
dosomething if condition;
也可以写成:
dosomething
if condition;
循环里的标签:
在for/while等循环关键字前面加上标签可以实现跳转。
标签用大写,可以是字母数字和下滑线,但是不能数字开头。
eval EXPR/BLOCK: 捕获错误
特殊变量[email protected]存放错误信息,如果没有触发异常[email protected]为空。
eval {
….
}
if ([email protected]_) {
print “An error occurred ([email protected]),continuing\n”;
}
evalbytes
goto
return
exit
do
wantarray
dump
caller
"__FILE”,"__LINE__","__PACKAGE__", "__SUB__"