Introspection
Perl 6 modules contain a mechanism that allows you to get information about the content of the module. Obtaining this meta-information is called introspection.
Take the Math.pm
modules from the previous section, More on is export
, as an example. This is how we can list all the methods that are exported by that module:
use Math; say Math::EXPORT::.keys;
This refers to the default EXPORT
sub, which the compiler generated for us. The sub
returns an object of the EXPORT
type that implements the Perl6::Metamodel::PackageHOW
interface. We'll not go deep into that theory and will limit ourselves to calling a useful method keys
that gives us a list of the tags available in the module:
(plusminus muldiv ALL)
Having the list of tags, we can iterate over them to get the list of subroutines that belong to them:
use Math; say Math::EXPORT::plusminus::.keys; say Math::EXPORT::muldiv::.keys; say Math::EXPORT::ALL::.keys;
This program prints the following three lines, one per each tag:
(&add...