On 0>> On Sun, Jun 3, 2018 at 6:33 PM ToddAndMargo <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 ];

Reply via email to