我想做这样的事情:
die "Fatal error: application version $MY-APPLICATION-VERSION"
由于Perl6模块无法假定与它打包在一起的文件的相对位置(例如,已安装的模块全部放入平面目录结构中),所以我不能只做$?FILE.IO.add("../META6.json").slurp
。有没有办法在可能安装或可能未安装的Perl6应用程序/模块中获取META6.json中声明的版本?
答案 0 :(得分: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"