我有一个写在模块文件(.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();
  • 我使用此编辑器:atom.io
  • 这是返回相同错误的问题的另一种解决方案
    当我尝试它时:perl6maven.com/tutorial/perl6-modules-export
  • 所需的结果是:
     in foo [Finished in 0.317s]
    
  • 最佳答案

    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编译器在名为chrmodule的文件夹中寻找modules。为什么?因为您告诉它:

    这是.pl6文件testOfCode3.pl6:
    use v6;
    use lib 'modules';
    
    use lib ...语句告诉Perl 6编译器首先在哪里查找模块。您已经添加了modules,因此Rakudo Perl 6编译器首先在modules文件夹中查找。

    它在那里找不到您的模块,因此继续进行下去,查找elsewhere。因此,列出C:\Users\Christian\.perl6等的行。

    最后,它永远找不到您的模块,因为您的模块位于perlCode中,并且您还没有告诉编译器去那里。 (出于可靠的考虑,它拒绝仅查看当前目录。)

    10-07 14:59