【问题标题】:Import simple module导入简单模块
【发布时间】:2017-06-16 16:42:21
【问题描述】:

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

C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\perlCode

我尝试使用Perl6: implicit and explicit import 的答案,但我的代码返回了这个错误:

===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]

这是.pm 文件,chrmodule1.pm

module chrmodule1 {
    sub foo is export(:DEFAULT, :one) {
        say 'in foo';
    }
}

这是.pl6 文件,testOfCode3.pl6

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

foo();

【问题讨论】:

    标签: module raku


    【解决方案1】:

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


    你写道:

    我有一个写在模块文件 (.pm) 中的函数,并且想在 Perl6 文件 (.pl6) 中使用它。这两个文件在同一个文件夹中:

    C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\perlCode
    

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

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

    ===SORRY!=== Could not find chrmodule1 at line 5 in:
        C:\Users\Christian\Dropbox\ChristianPrivatefiler\Programmering\Perl6\modules
    

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

    这是.pl6 文件,testOfCode3.pl6

    use v6;
    use lib 'modules';
    

    use lib ... 语句告诉 Perl 6 编译器首先在哪里查找模块。您已添加 modules,因此 Rakudo Perl 6 编译器首先查看 modules 文件夹。

    它没有在那里找到你的模块,所以它继续查找elsewhere。因此列出 C:\Users\Christian\.perl6 等的行。

    最后它永远找不到你的模块,因为你的模块在perlCode 中并且你没有告诉编译器去那里看。 (并且出于可靠的安全原因,它拒绝只查看当前目录。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2019-03-10
      • 2021-08-20
      相关资源
      最近更新 更多