On 2008 Nov 14, at 12:14, Larry Wall wrote:
On Thu, Nov 13, 2008 at 07:19:31PM -0600, Patrick R. Michaud wrote:
: S06:2362 says:
:
: You can get the current routine name by calling C<&?
ROUTINE.name>.
: (The outermost routine at a file-scoped compilation unit is
always
: named C<&MAIN> in the file's package.)
:
: Is this the same MAIN that is described later in
: "Declaring a MAIN subroutine"? It seems like that
: section describes MAIN subroutines that are lexically
: nested within the mainline code of the outermost
: file-scoped compilation unit, and it seems a little
: confusing if both are called MAIN.
:
: I'm guessing that the statement at S06:2362 is an artifact of
: an earlier draft that didn't have the section on MAIN subroutines,
: but I'm wanting to verify that this is the case (or seek further
: clarification if it isn't).
That's correct. We could fix it two ways. Either the mainline code
gets a consistent new name, or the outermost scope is redefined to
an INIT
if there is a user-defined MAIN. I can argue it both ways.
WHat *is* the outermost scope in that case? When is code in that
scope executed? I could see this as being a hack to allow a module to
be used either directly as a main, or "use"d; the former ignoring top
level scope code, the latter ignoring MAIN. I think Python has
something similar.
--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon university KF8NH