3 votes

Y a-t-il une différence entre goto &func ; et &func ; en Perl ?

goto &func;

&func;

Les deux me semblent identiques après quelques tests, est-ce le cas ?

5voto

ennuikiller Points 28005

Il y a une différence substantielle. Vérifiez ici : perl-goto

4voto

Dave Cross Points 17363

Vous avez fait les mauvais tests. Utilisez appelant pour voir ce qui se passe.

#!/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();

Quand vous l'exécuterez, vous verrez quelque chose comme :

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

goto:
main::foo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X