On Thu, Sep 14, 2017 at 1:42 AM, ToddAndMargo <toddandma...@zoho.com> wrote:

> On 09/13/2017 10:26 PM, Brandon Allbery wrote:
>
>> On Thu, Sep 14, 2017 at 12:46 AM, ToddAndMargo <toddandma...@zoho.com
>> <mailto:toddandma...@zoho.com>> wrote:
>>
>>     What is the Perl6 equivalent of the perl 5 "::"?
>>
>>     $Found = CheckSystemDependancy::Which ( $ProgramName, $HowToExit );
>>
>>
>> It's the same... but unlike Perl 5, there is a difference between subs
>> and methods, and subs are lexical by default (that is, they behave as if
>> defined "my sub ..." --- which syntax is legal in Perl 6 (and I think in
>> sufficiently recent perl 5 if you specify a minimum version in your
>> script)). For a sub to be callable that way, it must explicitly be defined
>> as "our sub ...".
>>
>> Although you will run into another issue because you have whitespace
>> before the "(", so it will be called with one parameter that is a 2-element
>> list.
>>
>
> 8:  use CheckSystemDependancy; # qw[ Which ];
> 35: #$Found = Which( $ProgramName, $HowToExit );
> 36: $Found = CheckSystemDependancy::Which( $ProgramName, $HowToExit );
>
> $ CheckSystemDependancy.pl6 ls live
> Could not find symbol '&Which'
>   in block <unit> at ./CheckSystemDependancy.pl6 line 36
>
> Line 35 works, but line 36 does not.
>

Okay, I guess I have to figure out how to rephrase my explanation.

If you do 'use CheckSystemDependency qw[ Which ]' then you are asking for
the bare name 'Which' to be imported into your local module's namespace.
Only this bare name is imported, and only into your module.

If you want to use the other way, the CheckSystemDependency module MUST
define Which as: our sub Which ...
If it is not explicitly declared "our", then it is declared "my" and the
only way the name can be seen outside the CheckSystemDependency module is
for it to be exported and for your module to import it.

You cannot simply call any sub you see in a different module. If it is not
explicitly declared "our" then you cannot access it; it is declared locally
to that module and cannot be seen anywhere else.

-- 
brandon s allbery kf8nh                               sine nomine associates
allber...@gmail.com                                  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

Reply via email to