Author: autrijus
Date: Fri Feb 24 12:21:45 2006
New Revision: 7853

Modified:
   doc/trunk/design/syn/S04.pod
Log:
* S04: The "If a curly occurs by a line by itself, then it
  stands for end of statement" rule from A04 is brought
  foward and further generalized -- now it only has to be
  at the end of line.  This allows:

    # semicolon optional after an end-of-line brace 
    try { ... }
    another_expression;

  and forbids:

    # comma needed between two subs
    sub f { ... } sub g { ... }


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod        (original)
+++ doc/trunk/design/syn/S04.pod        Fri Feb 24 12:21:45 2006
@@ -12,9 +12,9 @@ Larry Wall <[EMAIL PROTECTED]>
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 19 Aug 2004
-  Last Modified: 31 Jan 2006
+  Last Modified: 24 Feb 2006
   Number: 4
-  Version: 8
+  Version: 9
 
 This document summarizes Apocalypse 4, which covers the block and
 statement syntax of Perl.
@@ -92,6 +92,33 @@ value will be restored only if the curre
 or hypotheticalize the value or the variable depending on whether you
 do assignment or binding.
 
+=head1 Statement-ending blocks
+
+A line ending with a closing brace "C<}>", followed by nothing but
+whitespace or comments, will terminates statement if an end of statement
+can occur there.  That is, these two statements are equivalent:
+
+    my $x = sub { 3 }
+    my $x = sub { 3 };
+
+End-of-statement cannot occur within a bracketed expression, so
+this still works:
+
+    my $x = [
+        sub { 3 },  # this comma is not optional
+        sub { 3 }   # the statement won't terminate here 
+    ];
+
+Because subroutine declarations are expressions, not statements,
+this is now invalid:
+
+    sub f { 3 } sub g { 3 }     # two terms occur in a row
+
+But these two are valid:
+
+    sub f { 3 }; sub g { 3 };
+    sub f { 3 }; sub g { 3 }    # the trailing semicolon is optional
+
 =head1 Conditional statements
 
 The C<if> and C<unless> statements work almost exactly as they do in

Reply via email to