35、Perl goto 语句

Perl 有三种 goto 形式:got LABLE,goto EXPR,和 goto &NAME:

goto 类型 描述
goto LABEL 找出标记为 LABEL 的语句并且从那里重新执行
goto EXPR goto EXPR 形式只是 goto LABEL 的一般形式。
它期待表达式生成一个标记名称,并跳到该标记处执行
goto &NAME 它把正 在运行着的子进程替换为一个已命名子进程的调用

goto 语句语法格式

Perl 中 goto 语句语法格式如下所示:

goto LABEL

goto EXPR

goto &NAME

流程图

 

范例 : Perl 中 goto 语句的使用

#!/usr/bin/perl

=pod

  file: mail.pl
  author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)

  Copyright © 2015-2065 www.ddkk.com. All rights reserved.

=cut
$step = 7;

LOOP:do
{
    if( $step == 11 )
    {
       # 跳过迭代
       $step += 1;

       # 使用 goto LABEL 形式
       print "跳出输出 \n";

       goto LOOP;

       print "这一句不会被执行 \n";
    }

    print "step = $step\n";
    $step += 1;

}while( $step < 13 );

运行以上范例,输出结果为:

$ perl main.pl
step = 7
step = 8
step = 9
step = 10
跳出输出
step = 12

范例 : 使用 goto EXPR形式

我们使用了两个字符串,并使用点号 (.) 来链接

#!/usr/bin/perl

=pod

  file: mail.pl
  author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)

  Copyright © 2015-2065 www.ddkk.com. All rights reserved.

=cut

$cnt = 11;
$str1 = "LO";
$str2 = "OP";

LOOP:do
{
    if( $cnt == 15)
    {

       # 跳过迭代
       $cnt = $cnt + 1;
       # 使用 goto EXPR 形式
       goto $str1.$str2;    # 类似 goto LOOP
    }
    print "cnt = $cnt\n";
    $cnt = $cnt + 1;

}while( $cnt < 20 );

运行以上范例,输出结果为:

$ perl main.pl
cnt = 11
cnt = 12
cnt = 13
cnt = 14
cnt = 16
cnt = 17
cnt = 18
cnt = 19