从简单文件加载符号

时间:2019-04-30 17:37:08

标签: syntax perl6

此文件将为foo.pm6

sub bar { "quux" }
say "Loaded";

这个需求者。p6:

require "foo.pm6";

say bar;

require静默失败,未加载foo.pm6,并且找不到bar。这也会失败:

require foo;

say bar;
出现相同错误的

关于找不到酒吧。此文件:

require ::"foo";

say bar;

使用MVMArray: Can't shift from an empty array

甚至失败

更新:它默默地失败,因为它在找到未知符号bar时停止,因此在产生错误之前它没有运行“已加载”。不过,最后一个错误很奇怪。

Undeclared routine:
    bar used at line 9. Did you mean 'bag', 'VAR'?

因此,一旦出现问题,bar是否实际上已导入?如果是,则使用哪个包名称?我该怎么用?

1 个答案:

答案 0 :(得分:5)

您可以使用lib将当前目录添加到库搜索路径。

如果我在bar()的{​​{1}}中添加export特性:

foo.pm6

以下似乎有效(sub bar is export { "quux" } say "Loaded"; ):

requirer.p6

输出

use v6;
use lib '.';
require foo <&bar>;
say bar;