http://www.perlmonks.org?node_id=495687


in reply to Namespaces contiguous in the entirety

The package statement notifies the compiler what the following lexical scope's default namespace will be. Warning on the existence of that namespace seems a little arbitrary from that perspective.
HTH

_________
broquaint

  • Comment on Re: Namespaces contiguous in the entirety

Replies are listed 'Best First'.
Re^2: Namespaces contiguous in the entirety
by rir (Vicar) on Sep 28, 2005 at 13:47 UTC
    That is one way to look at it. I think it is more accurate to view it this way:
    1. The first package specific_name statement creates a namespace and enters it.
    2. Subsequent invocations simply reenter the namespace.
    Having had the challenge of trying to explain the difference between C declarations and definitions to newbies; I can see how losing the distinction in dwimery would appeal as design choice for a higher level language.

    My reply above to tanktalus gives more of my reason to view it this way.

    Be well,
    rir

      1. The first package specific_name statement creates a namespace and enters it.
      2. Subsequent invocations simply reenter the namespace.
      While you may view that as conceptually accurate, that is not really what happens, hence my confusion above. I don't think I've ever come across this being an issue, not least because I would imagine that if you called code on a class you thought had declared, when in fact you had redeclared an existing class, something would break rather loudly.

      I can't think of any obvious way to do this within perl, but as you say, it would probably fairly simple just to hack the perl source and recompile.

      HTH

      _________
      broquaint

        The obvious way is to examine all the COP nodes in the compiled program and see that packages don't appear in multiple files. This is test should fit inside of a few lines.