有没有办法从Perl6模块代码中的META6.json获取版本?

uge*_*exe 7 perl6

我想做这样的事情:

die "Fatal error: application version $MY-APPLICATION-VERSION"
Run Code Online (Sandbox Code Playgroud)

由于Perl6模块无法假定打包文件的相对位置(例如,已安装的模块全部放入平面目录结构中),所以我不能这样做$?FILE.IO.add("../META6.json").slurp。有没有办法在可能安装或未安装的Perl6应用程序/模块中获取META6.json中声明的版本?

uge*_*exe 10

从rakudo开始,v2019.03模块可以通过$?DISTRIBUTION访问用于加载它的Distribution对象。这允许以下内容:

unit module My::Module;

BEGIN my $VERSION = $?DISTRIBUTION.meta<version>;
use My::SubModule:ver($VERSION); # ensure we only ever use the version included in this distribution

die "Fatal error: application version $VERSION"
Run Code Online (Sandbox Code Playgroud)