perl循环控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl循环控制相关的知识,希望对你有一定的参考价值。
if
格式(类似于awk):
if(表达式){ #空格可以忽略 语句 ;} #elsif注意多了个s,elsif和else可以省略 elsif(表达式){ #语句块的{}必须有,可以为空 语句:} else{ 语句;}
unless
格式:
unless (表达式){ 语句;}
while
格式:
while(表达式){ 语句;}
do while
格式:
do {语句} while(表达式)
until
格式:
until(表达式){ 语句;}
do until
格式:
do {语句} until(表达式)
for foreach
for和foreach等价可以互换
格式:
c语言风格
for(表达式1;表达式2;表达式3){ 语句;}
表达式可以省略分号必须保留:(;;)为死循环
for($l=<>,$count=1;$count<10;$count++,$l=<>){ print "$l";}
foreach
foreach $w (列表or数组){ 语句;}
()中为@array或者列表(1,2,3)
$w为循环体的局部变量,并不会影响外部同名变量
循环体每次取数组或列表的元素直到为空
修改$w会修改对应元素的值;$w是列表数组元素的一个引用,与列表或数组变量引用具有相同内存地址,所以修改$w会修改其对应元素的值
列表中为常量,$w不可改变,$w只是对数组列表元素的一个引用,$w赋值时,$w指向新的内存对象,原列表中的值并不改变
for $a(@a){} for $a(1,2,3){} for $k(keys%h){} for $a(@a[1,2]){} for (@a){} #省略循环变量,缺省为$_
grep,map函数相当于for每个元素进行操作
循环控制
last 退出循环
next 执行下一次循环
redo 重新执行本次循环,for自增不进行,do语句中无效
goto 跳转,不能跳到循环或者子程序内
标记:
字母加下划线,通常用大写,以:分隔
标记定义:在循环语句前或者语句前(goto)
while for
跳转到标记: last|next|redo|goto label
OUT: while (...){ while(...){... last OUT; #跳转到OUT标识的语句块,这里是跳出这一层循环到外层循环 } }
continue{语句}
跟在循环语句后,循环体执行完成,下一次条件判断前执行
{}标识语句块
last跳出后不执行,next执行;
单行条件语句与循环语句
print $a if $a==0;#先判断条件在执行打印 print $a unless($a==0); print $a while ($a==0); #不要丢失对变量控制,防止形成死循环 print $a while ($a--==0); print $a until ($a--==0);
|| && (用法同shell)
$a==0 && print $a; open(FD6,‘file‘)||die "can‘t open file";#die函数,输出标准错误输出后推出
warn:输出信息后不退出,只是报警
$! :内部变量包含错误代码
[email protected] :内部变量包含错误信息
本文出自 “庭前夜末空看雪” 博客,请务必保留此出处http://12550795.blog.51cto.com/12540795/1954297
以上是关于perl循环控制的主要内容,如果未能解决你的问题,请参考以下文章