导入简单模块

Ari*_*fan 3 module perl6

我有一个在模块文件(.pm)中编写的函数,并希望在Perl6文件(.pl6)中使用它.这两个文件位于同一个文件夹中:

C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\perlCode
Run Code Online (Sandbox Code Playgroud)

我试图使用Perl6的答案:隐式和显式导入但我的代码返回了这个错误:

===SORRY!=== Could not find chrmodule1 at line 5 in:
    C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\modules
    C:\Users\Christian\.perl6
    C:\rakudo\share\perl6\site
    C:\rakudo\share\perl6\vendor
    C:\rakudo\share\perl6
    CompUnit::Repository::AbsolutePath<84241584>
    CompUnit::Repository::NQP<86530680>
    CompUnit::Repository::Perl5<86530720> [Finished in 0.436s]
Run Code Online (Sandbox Code Playgroud)

这是.pm文件,chrmodule1.pm:

module chrmodule1 {
    sub foo is export(:DEFAULT, :one) {
        say 'in foo';
    }
}
Run Code Online (Sandbox Code Playgroud)

这是.pl6文件,testOfCode3.pl6:

use v6;
use lib 'modules';
use chrmodule1;

foo();
Run Code Online (Sandbox Code Playgroud)

rai*_*iph 5

第二行testOfCode3.pl6应该是use lib 'perlCode';.


你写了:

我有一个在模块文件(.pm)中编写的函数,并希望在Perl6文件(.pl6)中使用它.这两个文件位于同一个文件夹中:

C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\perlCode
Run Code Online (Sandbox Code Playgroud)

因此,您已将模块存储在名为的文件夹中perlCode.

当你运行时,testOfCode3.pl6你会收到一个错误:

===SORRY!=== Could not find chrmodule1 at line 5 in:
    C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\modules
Run Code Online (Sandbox Code Playgroud)

因此,Rakudo Perl 6编译器chrmodule在名为的文件夹中查找modules.为什么?因为你告诉它:

这是.pl6文件,testOfCode3.pl6:

use v6;
use lib 'modules';
Run Code Online (Sandbox Code Playgroud)

一个use lib ...语句告诉Perl 6编译器首先查找模块.你已经添加了modules,所以Rakudo Perl 6编译器首先查看了该modules文件夹.

它没有在那里找到你的模块,所以它继续,寻找其他地方.因此,行列表C:\Users\Christian\.perl6等.

最后,它永远不会找到你的模块,因为你的模块已进入perlCode并且你没有告诉编译器看那里.(并且出于安全原因,它拒绝只查看当前目录.)