我有一个写在模块文件(.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();
当我尝试它时: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
中,并且您还没有告诉编译器去那里。 (出于可靠的考虑,它拒绝仅查看当前目录。)