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 >; ?