document that goto-EXPR will treat a subref differently
authorRicardo Signes <rjbs@cpan.org>
Mon, 17 Jun 2013 22:21:51 +0000 (18:21 -0400)
committerRicardo Signes <rjbs@cpan.org>
Tue, 18 Jun 2013 23:01:53 +0000 (19:01 -0400)
This has been the case since Perl 5.8 at least, and possibly longer.

This resolves [perl #118523].

pod/perlfunc.pod

index 4562b2c..9428a4d 100644 (file)
@@ -2929,7 +2929,12 @@ The author of Perl has never felt the need to use this form of C<goto>
 does not offer named loops combined with loop control.  Perl does, and
 this replaces most structured uses of C<goto> in other languages.)
 
-The C<goto-EXPR> form expects a label name, whose scope will be resolved
+The C<goto-EXPR> form expects to evaluate C<EXPR> to a code reference or
+a label name.  If it evaluates to a code reference, it will be handled
+like C<goto-&NAME>, below.  This is especially useful for implementing
+tail recursion via C<goto __SUB__>.
+
+If the expression evaluates to a label name, its scope will be resolved
 dynamically.  This allows for computed C<goto>s per FORTRAN, but isn't
 necessarily recommended if you're optimizing for maintainability: