On Sun, Jun 3, 2018 at 7:40 PM ToddAndMargo <toddandma...@zoho.com <mailto:toddandma...@zoho.com>> wrote:

     >> On Sun, Jun 3, 2018 at 7:17 PM ToddAndMargo
    <toddandma...@zoho.com <mailto:toddandma...@zoho.com>
     >> <mailto:toddandma...@zoho.com <mailto:toddandma...@zoho.com>>>
    wrote:
     >>
     >>
     >>     On 0>> On Sun, Jun 3, 2018 at 6:33 PM ToddAndMargo
     >>     <toddandma...@zoho.com <mailto:toddandma...@zoho.com>
    <mailto:toddandma...@zoho.com <mailto:toddandma...@zoho.com>>
     >>      >> <mailto:toddandma...@zoho.com
    <mailto:toddandma...@zoho.com> <mailto:toddandma...@zoho.com
    <mailto:toddandma...@zoho.com>>>>
     >>     wrote:
     >>      >>
     >>      >>     On 06/03/2018 03:24 PM, Brandon Allbery wrote:
     >>      >>      > It is allowed if you have 'unit module
    RunNoShell;' at
     >>     the top of
     >>      >>      > RunNoShell.pm6. Otherwise you defined it in the main
     >>     namespace and
     >>      >>      > looking for it in the RunNoShell namespace will fail.
     >>      >>      >
     >>      >>      > Perl 5 does the same thing fi you omitted 'package
     >>     RunNoShell;'
     >>      >>     at the
     >>      >>      > top of RunNoShell.pm.
     >>      >>      >
     >>      >>
     >>      >>     The name of the file is `RunNoShell.pm`
     >>      >>
     >>      >>     It has two exported subs:
     >>      >>            sub RunNoShellErr ( $RunString ) is export
     >>      >>            sub RunNoShell ( $RunString ) is export
     >>      >>
     >>      >>     If I place
     >>      >>            unit module RunNoShell;
     >>      >>
     >>      >>     at the top, what happens?
     >>      >>           All subs get exported?
     >>      >>           Do I have to import them differently
     >>      >>
     >>      >>
     >>      >> What happens is your two subs get the full names
     >>      >>
     >>      >>      RunNoShell::RunNoShellErr
     >>      >>      RunNoShell::RunNoShell
     >>      >>
     >>      >> Without those lines, their full names are
     >>      >>
     >>      >>      MAIN::RunNoShellErr
     >>      >>      MAIN::RunNoShell
     >>
     >>     6/03/2018 03:54 PM, Brandon Allbery wrote:
     >>      >
     >>      > Since you are explicitly running RunNoShell::RunNoShell,
    you get an
     >>      > error with the second because there is no sub by that name.
     >>      >
     >>      > Again, this is no different from Perl 5 if you forget to
    include
     >>      > 'package RunNoShell;' And this matters only in the case
    where you
     >>      > explicitly asked for RunNoShell::RunNoShell instead of just
     >>     RunNoShell,
     >>      > which importing handles for you.
     >>
     >>
     >>     My main reason for wanting to know this is for maintaining my
     >>     code.
     >>
     >>     In Perl 5
     >>           use Term::ANSIColor qw ( BOLD BLUE RED GREEN RESET );
     >>
     >>     I can do a simple search to figure our where the heck
     >>     (may not be my "actual" word) `BOLD` came from.
     >>
     >>     If I want to doubly make sure I know where things came from,
     >>     I can write
     >>             Term::ASNIColor::BOLD
     >>
     >>     I have no such option in Perl 6 to do this.  This is the ONLY
     >>     thing I like better in p5 that is better than p6.  (Perl 5's
     >>     sub declarations are a nightmare.)
     >>
     >>     So I am looking for a substitute way of doing this.  So
     >>     back to my original question:
     >>
     >>
     >>     The name of the file is `RunNoShell.pm`
     >>
     >>     It has two exported subs:
     >>            sub RunNoShellErr ( $RunString ) is export
     >>            sub RunNoShell ( $RunString ) is export
     >>
     >>     If I place
     >>            unit module RunNoShell;
     >>
     >>     at the top, what happens?
     >>           All subs get exported?
     >>           Do I have to import them differently
     >>
     >>                  Old way:
     >>                      use RunNoShell;  # qx[ RunNoShell ];

    On 06/03/2018 04:22 PM, Brandon Allbery wrote:
     > You have misunderstood. The reason you can do that in Perl 5 is
    because
     > Term/ANSIColor.pm starts with
     >
     >      package Term::ANSIColor;
     >
     > It has nothing to do with what you named the file, it is a matter of
     > namespaces. And Perl 5 and Perl 6 behave mostly the same here
    (Perl 6
     > has a few more options). Neither one will create a new namespace
    just
     > because you stuck something in a different file; you must in both
    cases
     > specify the namespace ("package: in Perl 5, "unit module" in Perl 6).
     >

    Not sure why you did not answer my question.  Maybe I am just confused.

On 06/03/2018 04:45 PM, Brandon Allbery wrote:
The question you asked was why putting sub RunInTerm in RunInTerm.pm6 did not declare a name RunInTerm::RunInTerm, it only declared a name RunInTerm. You even provided a specific example of this question.

If you had a different question in mind, try asking it again.


That explains it.  I was asking what happens and what
are the ramifications, not "why" it happened.  I was
confused by your answer because I know you really,
really know your stuff.

If I place
     unit module RunNoShell;

at the top, what happens?

    1) All subs get exported? Or just the ones with
       "export" in their declaration?

    2) Do I have to import subs differently?  Or do I
       import them as normal?

       Can I do a
            use RunNoShell < RunNoShell RunNoShellErr >;  ?

Reply via email to