Чтобы загрузить модуль без импорта, используйте need
вместо:
need Hash::Merge;
В случае рассматриваемого модуля он не объявляет вещи, которые он экспортирует с our
, что, к сожалению, означает, что он называется:
Hash::Merge::merge-hash(...)
Не будет работать, так как он не установлен в пакете. Тем не менее, все еще можно выкопать символ из экспорта вручную:
need Hash::Merge;
say Hash::Merge::EXPORT::DEFAULT::merge-hash({ a => 1 }, { b => 2 })
И, для большего удобства, он может быть псевдонимом:
need Hash::Merge;
my constant &merge-hash = &Hash::Merge::EXPORT::DEFAULT::merge-hash;
say merge-hash({ a => 1 }, { b => 2 });
Существует спекулятивный синтаксис по линиям use Hash::Merge :MY<&merge-hash>
, который не реализован в текущих версиях Perl 6, но, вероятно, будет иметь ту же семантику, что и трюк constant
, показанный здесь.