Perl 修改循环控制流的语句

标记修饰符

标记有自己的命名空间,和标量变量、列表、hash、函数一样,不过由于它没有特别的前置符号,所以在命名上有一些限制:如尽量不要和其他的命名冲突,标记名称最好由大写字母和数字构成,这样保证不会和任何保留字冲突,而且看起来也比较明显。选定标记之后,只要把它放在需要的语句前面,并加上冒号即可,下面是此用法的一个示例:

MYLABEL: while(condition){
		statement1;
		statement2;
		if(another_condition){
			last MYLABEL;
		}
	}

last语句

使用不带标号的修饰符的last语句时,退出当前语句块,使用带标号的修饰符的last语句时,退出与所带标号修饰符相关的语句块。
 示例:

#!/usr/bin/perl   -w

@x=('A'..'Z');
for ($index = 0;$index < @x ;$index++){
	if($x[$index] eq 'T'){
		last;
	}
}	
print "$index\n";
简单来说,last的意思是退出循环,与C语言中的break作用相同。


next语句
        使用不代标号修饰符的next语句时,退出本次执行的当前语句块,继续判断循环条件执行循环;使用带标号修饰符的next语句时,退出与所带标号修饰符相关联的循环,仍需要继续判断循环条件执行循环。
示例:

#!/usr/bin/perl   -w

@array=(0..9);
for ($index = 0;$index < @array ;$index++){
	if( $index == 3 || $index == 5 ){
		next;
	}
	$array[$index] = '*';
	
}	

print "@array\n";
简单来说,next的含义是执行下一个循环,与C语言的continue作用相同。


redo语句
使用不带标号修饰符的redo语句时,语句跳到所在语句块的第一条语句上;使用带标号修饰符的read语句时,跳到与所带标号相关联的语句块上的第一条语句上。
示例:

#!/usr/bin/perl   -w

for($i=0;$i<1;$i++){
	print("What's your name?\n");
	$name=<STDIN>;
	chomp($name);

	if( ! length($name)){
		print("Msg: Zero length input, Please try again!\n");
		redo;
	}
}
print("Thank you ".uc($name)."\n");
redo是Perl的一个特有命令,其含义是重复此次循环,即循环变量不变,回到循环起始点。但要注意,redo命令在do循环中不起作用。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值