b / w goto& func是否有任何区别;和& func;在Perl?

时间:2011-07-15 13:22:38

标签: perl goto

goto &func;

&func;
经过一番测试,他们两个看起来和我相同,就是这样吗?

2 个答案:

答案 0 :(得分:5)

存在很大差异。点击此处:perl-goto

答案 1 :(得分:4)

您正在运行错误的测试。使用caller查看发生了什么。

#!/usr/bin/perl

use strict;
use warnings;

sub foo {
  my $level = 0;
  while (my $sub = (caller($level))[3]) {
    print "$sub\n";
    ++$level;
  }
  print "\n";
}

sub bar {
  print "sub:\n";
  &foo;
}

sub baz {
  print "goto:\n";
  goto &foo;
}

bar();
baz();

当你运行它时,你会看到类似的东西:

$  ~/stuff/goto
sub:
main::foo
main::bar

goto:
main::foo