Goto 与 Perl 中的本地函数

Goto vs. Local function in Perl

在 Perl 中,使用 goto 还是局部函数更好,为什么要举个例子?

比如我用的是代码

sub data {
    data;
}

data();

goto L:

L: if ( $i == 0 )
   print "Hello!!!!";

Programmers don't die. They just GOSUB without RETURN.

就是说,不要 在 Perl 中使用 goto

  • 如果你想让一条语句执行一次,只写那条语句,不要使用任何流控制
  • 如果你想让你的程序多次执行这些东西,把它放在一个循环中
  • 如果你想让它们从不同的地方执行,把它们放在一个sub
  • 如果您希望子程序在不同的程序中可用,请将它们放在一个模块中
  • 不要使用goto

在 Perl 中有一处 goto 有意义。 Matt Trout 在他的博客 post No, not that goto, the other goto.

中谈到了这一点

传统观点认为其他构造比 goto 更好。

如果您想重复做某事,请使用循环。

如果你想有条件地做某事,请使用带有 if 的块。

如果你想去某个地方然后回来,使用函数。

如果您想尽早退出 "jump straight to the end",通常可以使用异常来更好地编写。 (Perl 轻松管理