perl next和last

跳出控制结构:next和last


next 和last 操做符运维你在循环中改变程序执行的方向,你可能常常会遇到一些的特殊状况,

碰到这种状况时你但愿跳过它,或者像退出循环。

好比当你处理Unix 帐号时,你也许但愿跳过系统帐号(好比root或Ip),

next 操做符容许你将跳至本地循环的结束,

开始下一个循环。


而last 操做符容许你跳至整个循环的结束,若是循环条件表达式为假时发生的状况同样。



next 跳过本地循环,回到循环顶端:
Vsftp:/data01/mysqllog/binlog# cat a3.pl 
my @users=qw/root a1 a2 a3 b1 b2 b3 lp c1 c2 c3/;
 foreach $user (@users){
   if ($user eq "root" or $user eq "lp") {next;};
   print "\$user is $user\n";
   }
Vsftp:/data01/mysqllog/binlog# perl a3.pl 
$user is a1
$user is a2
$user is a3
$user is b1
$user is b2
$user is b3
$user is c1
$user is c2
$user is c3


last 退出循环:

Vsftp:/data01/mysqllog/binlog# cat a3.pl 
my @users=qw/ a1 a2 a3 b1 root b2 b3 lp c1 c2 c3/;
 foreach $user (@users){
   if ($user eq "root" or $user eq "lp") {last;};
   print "\$user is $user\n";
   }
Vsftp:/data01/mysqllog/binlog# perl a3.pl 
$user is a1
$user is a2
$user is a3
$user is b1



例子:next 跳过本次循环

Vsftp:/data01/mysqllog/binlog# cat t2.pl 
my $str='AAWHEREBBCC';
 if ($str =~ s/WHERE/SET/)
   {print "\$str---1 is $str\n"}
elsif ($str=~ s/SET/SCAN/)
   {print "\$str---2 is $str\n";};

Vsftp:/data01/mysqllog/binlog# perl t2.pl 
$str---1 is AASETBBCC



相关文章
相关标签/搜索