如何在模块的另一个文件的文件中获取路径?

sid*_*com 7 module path package perl6

如何获取模块另一个文件的路径?

我以这种方式尝试过,但是我不知道从哪里获得,$here并且我不知道如果拥有它是否可以工作$here

use v6;
unit class Aaa::Bbb::Ccc;

my $here = '.../lib/Aaa/Bbb/Ccc.pm6'.IO;
my $bin = $here.parent.parent.parent.add( 'bin' ).add( 'app' );

use Pod::Load;
my $pod = load( $bin );
# use the $pod
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,它$pod是空的:

use Pod::Load;
my $pod = load( $*PROGRAM );
say $pod.perl;  # $[]
Run Code Online (Sandbox Code Playgroud)

uge*_*exe 8

没有“模块的另一个文件”之类的东西。一个模块将只代表一个文件。分布表示多个模块,因此代表多个文件。另外,模块不能假定它是从文件系统中加载的-它可能是从tar文件套接字中加载到内存中的,如果模块尝试访问,例如"../MyOtherModule.pm6".IO,显然会失败。

可以放心地做的是获取同一发行版中任何模块的内容:

unit class Aaa::Bbb::Ccc;

my $bin-code = $?DISTRIBUTION.content("bin/app").open.slurp;
Run Code Online (Sandbox Code Playgroud)