Author: larry
Date: Fri Jun  8 11:09:37 2007
New Revision: 14416


Added PROCESS as a superglobal namespace for easier apachefication of scripts.

Modified: doc/trunk/design/syn/S02.pod
--- doc/trunk/design/syn/S02.pod        (original)
+++ doc/trunk/design/syn/S02.pod        Fri Jun  8 11:09:37 2007
@@ -12,9 +12,9 @@
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 10 Aug 2004
-  Last Modified: 2 Jun 2007
+  Last Modified: 8 Jun 2007
   Number: 2
-  Version: 109
+  Version: 110
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -1460,6 +1460,7 @@
     MY          # Lexical variables declared in the current scope
     OUR         # Package variables declared in the current package
     GLOBAL      # Builtin variables and functions
+    PROCESS     # process-related globals
     OUTER       # Lexical variables declared in the outer scope
     CALLER      # Contextual variables in the immediate caller's scope
     CONTEXT     # Contextual variables in any context's scope
@@ -1674,6 +1675,28 @@
 =item *
+For an ordinary Perl program running by itself, the C<GLOBAL> and
+C<PROCESS> namespaces are considered synonymous.  However, it certain
+situations (such as shared hosting under a webserver), the actually
+process may contain multiple virtual processes, each running its own
+"main" code.  In this case, the C<GLOBAL> namespace holds variables
+that properly belong to the individual virtual process, while the
+C<PROCESS> namespace holds variables that properly belong to the actual
+process as a whole.  From the viewpoint of the C<GLOBAL> namespace
+there is little difference, since process variables that normally
+appear in C<GLOBAL> are automatically imported from C<PROCESS>.
+However, the process as a whole may place restrictions on the
+mutability of process variables as seen by the individual subprocesses.
+Also, individual subprocesses may not create new process variables.
+If the process wishes to grant subprocesses the ability to communicate
+via the C<process> namespace, it must supply a writeable hash or some
+such to all the subprocesses granted that privilege.
+When these namespaces are distinguished, the C<*> shortcut always refers
+to C<GLOBAL>.  There is no twigil shortcut for C<PROCESS::>.
+=item *
 Standard input is C<$*IN>, standard output is C<$*OUT>, and standard error
 is C<$*ERR>.  The magic command-line input handle is C<$*ARGS>.
 The arguments themselves come in C<@*ARGS>.  See also "Declaring a MAIN

Reply via email to