goto LABEL
goto &NAME
goto &NAME
goto LABELの形式は、LABELというラベルを探して、そこから実行を再開します。Perlでは、ほとんど必要のないラベルです。
gotoを、サブルーチンやforeachループなど、初期化が必要な構文の内側に飛ばす
ために使用するのはよくありません。また、最適化によってなくなってしまう構文の中も同様です。それ以外では、サブルーチンの外を含む動的スコープ内のほとんどすべての場所で使用できますが、そのような場合は、lastやdieを使った方が良いでしょう。
gotoの使い方
# 実用性のないスクリプトですが、goto の動作がわかると思います
$max_number = 1;
LOOP1:while(1){
for (1 .. $max_number) {
print "LOOP1:", $max_number, "\n";
}goto LOOP2;
}
LOOP2:{
print "LOOP2:", $max_number, "\n";
}
> LOOP1:1
> LOOP2:1
goto &NAMEの形式は、現在実行中のサブルーチンをNAMEで指定したサブルーチンの呼び出しで置き換えます。これは、AUTOLOADサブルーチンが別のサブルーチンをロードして、別のサブルーチンが最初に呼ばれたようにするために使われます(ただし、現在のサブルーチンで@_を修正した場合には、置き換えられたサブルーチンに伝わります)。gotoのあとは、callerも元のルーチンが先に呼び出されたことを知ることはできません。