模块内部的相对路径

Ant*_*ado 10 module perl6 zef

我有这个模块,需要一个特定的文件才能工作。您可以传递您要使用或不使用的文件的路径。如果不这样做,那么将采用默认文件。该默认文件位于资源文件夹中,因此我将路径键入为:“ resources / data / type-graph.txt”。问题是,这不起作用,因为它将我的CWD作为根目录。

您知道如何建立相对于模块目录的路径吗?

任何建议表示赞赏:)。

Pat*_*ker 11

您应该查看“ 模块”文档页面。该示例给出了访问资源文件夹中放置的文件的方法:

my $template-text = %?RESOURCES<templates/default-template.mustache>.slurp;
Run Code Online (Sandbox Code Playgroud)

您还需要列出文件,META6.json以便在安装模块后即可访问该文件。

{
    ...,
    "resources": [ "templates/default-template.mustache"]
}
Run Code Online (Sandbox Code Playgroud)

正如guifa在注释中指出的,它%?RESOURCES适用于单个文件,不适用于目录结构。它不能保证文件的实际存储方式。因此%?RESOURCES<templates>.dir将无法正常工作。

  • @guifa注意,任何使用`%?RESOURCES`的东西都可以知道文件名:`$%DISTRIBUTION.meta &lt;resources&gt;的`say%?RESOURCES {$ _}。 (3认同)
  • 可能值得指出的是,%?RESOURCES需要完全预知文件名。例如,您不能执行'%?RESOURCES &lt;templates&gt; .dir'并获得可用的结果。 (2认同)