使用完全限定名称调用模块子例程

Håk*_*and 3 module perl6 raku

我创建了一个简单的测试模块./mods/My/Module.pm6:

unit module My::Module;
use v6;

sub hello () is export {
    say "Hello";
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个测试脚本./p.p6:

#! /usr/bin/env perl6

use v6;
use My::Module;

My::Module::hello();
Run Code Online (Sandbox Code Playgroud)

然后我设置PERL6LIB包含该文件夹./mods,然后运行脚本:

$ ./p.p6 
Could not find symbol '&hello'
  in block <unit> at ./p.p6 line 7
Run Code Online (Sandbox Code Playgroud)

但是,如果我替换My::Module::hello()脚本中的行,hello()它可以正常工作.我在这里错过了什么?

Hol*_*lli 5

如果你导出你好,你可以简单地使用它

use v6;
use lib <lib>; # hint: no need to tinker with the environment
use My::Module;

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

如果您真的想要使用完全限定名称,则必须使用我们的关键字.

our sub hello () is export {
    say "Hello";
}
Run Code Online (Sandbox Code Playgroud)