Perl goto 语句
Perl中的 goto 语句是一个跳转语句,有时也被称为无条件的跳转语句。 goto 语句可以用来从一个函数的任何地方跳到任何地方。
语法
LABEL:
Statement 1;
Statement 2;
.
.
.
.
.
Statement n;
goto LABEL;
在上述语法中, goto 语句将指示编译器立即转到/跳到标记为LABEL的语句。这里标签是一个用户定义的标识符,表示目标语句。紧随 “label: “之后的语句是目标语句。
Perl中的 goto 语句有三种形式–Label、Expression和Subroutine。
- Label: 它将简单地跳到标有LABEL的语句,并从该语句继续执行。
- 表达式: 在这种形式下,将有一个表达式在评估后返回一个Label的名字,goto将使它跳转到标记的语句。
- 子程序: goto将把编译器从当前运行的子程序转移到给定名称的子程序。
语法
goto LABEL
goto EXPRESSION
goto Subroutine_Name
使用LABEL名称的goto: LABEL名称用于跳转到代码中的一个特定语句,并从该语句开始执行。但它的范围是有限的。它只能在它被调用的范围内工作。
例子
# Perl program to print numbers
# from 1 to 10 using goto statement
# function to print numbers from 1 to 10
sub printNumbers()
{
my n = 1;
label:
print "n ";
n++;
if (n <= 10)
{
goto label;
}
}
# Driver Code
printNumbers();
输出。
1 2 3 4 5 6 7 8 9 10
使用表达式的goto: 表达式也可以用来给特定的标签一个调用,并将执行控制传递给该标签。这个表达式在传递给 goto 语句时,评估生成一个标签名,并从该标签名定义的语句继续执行。
例子
# Perl program to print numbers
# from 1 to 10 using the goto statement
# Defining two strings
# which contain
# label name in parts
a = "lab";b = "el";
# function to print numbers from 1 to 10
sub printNumbers()
{
my n = 1;
label:
print "n ";
n++;
if (n <= 10)
{
# Passing Expression to label name
goto a.b;
}
}
# Driver Code
printNumbers();
输出。
1 2 3 4 5 6 7 8 9 10
使用子程序的goto: 使用 goto 语句也可以调用一个子程序。这个子程序从另一个子程序中调用,或根据其用途单独调用。它保留了在调用语句旁边要执行的工作。这种方法可以用来递归地调用一个函数,以打印一系列或一系列的字符。
例
# Perl program to print numbers
# from 1 to 10 using goto statement
# function to print numbers from 1 to 10
sub label
{
print "n ";
n++;
if(n <= 10)
{
goto &label
}
}
# Driver Code
myn = 1;
label();
输出。
1 2 3 4 5 6 7 8 9 10