Returns the previously registered mro with the given name, or NULL if not registered. See "mro_register".
name
mro_register
Returns the Depth-First Search linearization of @ISA the given stash. The return value is a read-only AV*. level should be 0 (it is used internally in this function's recursion).
@ISA
level
You are responsible for SvREFCNT_inc() on the return value if you plan to store it anywhere semi-permanently (otherwise it might be deleted out from under you the next time the cache is invalidated).
SvREFCNT_inc()
Returns the mro linearisation for the given stash. By default, this will be whatever mro_get_linear_isa_dfs returns unless some other MRO is in effect for the stash. The return value is a read-only AV*.
mro_get_linear_isa_dfs
Takes the necessary steps (cache invalidations, mostly) when the @ISA of the given package has changed. Invoked by the setisa magic, should not need to invoke directly.
setisa
Call this function to signal to a stash that it has been assigned to another spot in the stash hierarchy. stash is the stash that has been assigned. oldstash is the stash it replaces, if any. gv is the glob that is actually being assigned to.
stash
oldstash
gv
This can also be called with a null first argument to indicate that oldstash has been deleted.
This function invalidates isa caches on the old stash, on all subpackages nested inside it, and on the subclasses of all those, including non-existent packages that have corresponding entries in stash.
It also sets the effective names (HvENAME) on all the stashes as appropriate.
HvENAME
If the gv is present and is not in the symbol table, then this function simply returns. This checked will be skipped if flags & 1.
flags & 1
Invalidates method caching on any child classes of the given stash, so that they might notice the changes in this one.
Ideally, all instances of PL_sub_generation++ in perl source outside of mro.c should be replaced by calls to this.
PL_sub_generation++
Perl automatically handles most of the common ways a method might be redefined. However, there are a few ways you could change a method in a stash without the cache code noticing, in which case you need to call this method afterwards:
1) Directly manipulating the stash HV entries from XS code.
2) Assigning a reference to a readonly scalar constant into a stash entry in order to create a constant subroutine (like constant.pm does).
This same method is available from pure perl via, mro::method_changed_in(classname).
mro::method_changed_in(classname)
Set meta to the value contained in the registered mro plugin whose name is name.
meta
Croaks if name hasn't been registered
To install less, copy and paste the appropriate command in to your terminal.
cpanm
cpanm less
CPAN shell
perl -MCPAN -e shell install less
For more information on module installation, please visit the detailed CPAN module installation guide.