Author: lwall
Date: 2009-09-07 20:32:55 +0200 (Mon, 07 Sep 2009)
New Revision: 28201

Modified:
   docs/Perl6/Spec/S06-routines.pod
Log:
[S06] remove the slightly non-sensical 'use GLOBAL' in favor of 'defines'


Modified: docs/Perl6/Spec/S06-routines.pod
===================================================================
--- docs/Perl6/Spec/S06-routines.pod    2009-09-07 18:03:22 UTC (rev 28200)
+++ docs/Perl6/Spec/S06-routines.pod    2009-09-07 18:32:55 UTC (rev 28201)
@@ -15,8 +15,8 @@
 
     Created: 21 Mar 2003
 
-    Last Modified: 31 Aug 2009
-    Version: 113
+    Last Modified: 7 Sep 2009
+    Version: 114
 
 
 This document summarizes Apocalypse 6, which covers subroutines and the
@@ -270,20 +270,27 @@
 may be made directly visible by importation.
 
 Global subroutines and variables are normally referred to by prefixing
-their identifiers with C<*> (short for "C<GLOBAL::>").
+their identifiers with the C<*> twigil, to allow contextual overrides.
 
-    $*next_id = 0;
+    GLOBAL::<$next_id> = 0;
     sub GLOBAL::saith($text)  { print "Yea verily, $text" }
 
     module A {
         my $next_id = 2;     # hides any global or package $next_id
         &*saith($next_id);   # print the lexical $next_id;
-        &*saith($*next_id);  # print the global $next_id;
+        &*saith($*next_id);  # print the dynamic $next_id;
     }
 
+To disallow contextual overrides, you must access the globals directly:
+
+    GLOBAL::saith($GLOBAL::next_id);
+
+The fact that this is verbose is construed to be a feature.  Alternately,
+you may play aliasing tricks like this:
+
     module B {
-        use GLOBAL <$next_id>;
-        &*saith($next_id);    # Unambiguously the global $next_id
+        GLOBAL defines <&saith $next_id>;
+        saith($next_id);    # Unambiguously the global definitions
     }
 
 =head2 Dynamically scoped subroutines
@@ -2532,8 +2539,8 @@
 
     require COMPILING <$x $y $z>;
 
-Note that you need to use the run-time C<:=> and C<require> forms, not C<::=>
-and C<use>, because the macro caller's compile-time is the macro's runtime.
+Note that you need to use the run-time C<require> form, not
+C<use>, because the macro caller's compile-time is the macro's runtime.
 
 =head2 Splicing
 

Reply via email to