To expand on why putting the file in a directory doesn't Just Work, and why so much magic needs to be there for it to work: loading modules is a complicated thing in Perl 6, and long story short, if you want to be able to have multiple versions installed and loadable at the same time, you need some magic under the hood to compensate for that. This magic is what makes installing/precompiling a module you want to have installed more complicated than a couple of 'mv's.

If you want to avoid the overhead of panda or other installers (to their defense, there are several good reasons why they're so bulky and complicated :)), I sometimes use a script based on Module::Toolkit, where if you want to "just install the damned thing, nothing else", it's just a simple 'mtk install .':

Hope this helps,


On 01/05/16 15:23, Brock Wilcox wrote:

I recommend putting your module into a 'lib' dir near your script. Then in your script add:

  use lib 'lib';

That way you don't have to add the -l param.

On May 1, 2016 09:21, "Fernando Santagata" < <>> wrote:


    I'm trying to write a module and make a program load and use it.
    Since this code:

    perl6 -e 'say $*REPO'



    I thought that putting the .pm6 file in there would be enough. So,
    since my module is A::B, I put B.pm6 into ~/.perl6/A .
    But when I run a test program which loads A::B, I receive this error:

    Could not find A::B at line 5 in:

    If I run the test program this way it works:

    perl6 -I ~/.perl6 ./test.p6

    Why is that? Where should I put the module file to be seen
    automatically, without adding the -I option?

    As a side note, if I want to precompile the module, as panda does
    when installing new modules from the repository, where should I
    put the .moarvm file?


-- Fernando Santagata

Reply via email to