问题
I want to do something like this:
die "Fatal error: application version $MY-APPLICATION-VERSION"
Since a Perl6 module cannot assume the relative locations of files it was packaged with (for instance installed modules are all put into a flat directory structure) I can't just do $?FILE.IO.add("../META6.json").slurp
. Is there a way to get the version declared in META6.json in a Perl6 app/module that may or may not be installed?
回答1:
As of rakudo v2019.03
modules may access the Distribution object used to load it via $?DISTRIBUTION. This allows the following:
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"
来源:https://stackoverflow.com/questions/55361810/is-there-a-way-to-get-the-version-from-meta6-json-in-perl6-module-code