跳出控制结构: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 "; } 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 "; } 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 "} elsif ($str=~ s/SET/SCAN/) {print "$str---2 is $str ";}; Vsftp:/data01/mysqllog/binlog# perl t2.pl $str---1 is AASETBBCC