从简单文件加载符号

问题描述 投票:3回答:1

这个文件将是foo.pm6

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

这一个requirer.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实际上是进口的吗?如果是,在哪个包名?我怎么用呢?

syntax perl6
1个回答
5
投票

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

如果我在export中将bar()特征添加到foo.pm6

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

以下似乎工作(requirer.p6):

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

输出:

Loaded
quux
© www.soinside.com 2019 - 2024. All rights reserved.