On Sun, Jun 3, 2018 at 7:17 PM ToddAndMargo <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>>>
    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.

Reply via email to