On 8/11/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
+To return from other types of code structures, the C<leave> function
+is used. The first argument, if supplied, specifies a C<Selector>
+for the control structure to leave. The C<Selector> and will be
+smart-matched against the dynamic scope objects from inner to outer.
+The first that matches is the scope that is left.
s/and //
+As with module and class declarations, a sub or method declaration
+ending in semicolon is allowed at the outermost file scope if it is the
+first such declaration, in which case the rest of the file is the body:
+
+ sub MAIN ($directory, :$verbose, *%other, [EMAIL PROTECTED]);
+ for @filenames { ... }
+
+Proto or multi definitions may not be written in semicolon form,
+nor may C<MAIN> subs within a module or class. (A C<MAIN> routine
+is allowed in a module or class, but is not usually invoked unless
+the file is run directly (see a above). This corresponds to the
+"unless caller" idiom of Perl 5.) In general, you may have only one
+semicolon-style declaration that controls the whole file.
Should the following text now be removed from S06:
====================
--- S06.pod.orig 2006-08-11 11:50:46.000000000 +0300
+++ S06.pod 2006-08-11 11:51:08.000000000 +0300
@@ -159,14 +159,6 @@
sub foo {...} # Yes, those three dots are part of the actual syntax
-The old Perl 5 form:
-
- sub foo;
-
-is a compile-time error in Perl 6 (because it would imply that the body of the
-subroutine extends from that statement to the end of the file, as C<class> and
-C<module> declarations do).
-
Redefining a stub subroutine does not produce an error, but redefining
an already-defined subroutine does. If you wish to redefine a defined sub,
you must explicitly use the "C<is instead>" trait.
====================
--
Markus Laire