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)
没有“模块的另一个文件”之类的东西。一个模块将只代表一个文件。分布表示多个模块,因此代表多个文件。另外,模块不能假定它是从文件系统中加载的-它可能是从tar文件或套接字中加载到内存中的,如果模块尝试访问,例如"../MyOtherModule.pm6".IO,显然会失败。
您可以放心地做的是获取同一发行版中任何模块的内容:
unit class Aaa::Bbb::Ccc;
my $bin-code = $?DISTRIBUTION.content("bin/app").open.slurp;
Run Code Online (Sandbox Code Playgroud)