NAME
    "Method::Utils" - functional-style utilities for method calls

FUNCTIONS
    All of the following functions are intended to be used as method call
    modifiers. That is, they return a "SCALAR" reference to a "CODE"
    reference which allows them to be used in the following syntax

     $ball->${possibly "bounce"}( "10 metres" );

    Since the returned double-reference can be dereferenced by "${ }" to
    obtain the "CODE" reference directly, it can be used to create new
    methods. For example:

     *bounce_if_you_can = ${possibly "bounce"};

    The following utilities are described from the perspective of directly
    invoking the returned code, as in the first example.

  possibly $method
    Invokes the named method on the object or class and return what it
    returned, if it exists. If the method does not exist, returns "undef" in
    scalar context or the empty list in list context.

  inwardly $method
  outwardly $method
    Invokes the named method on the object or class for *every* class that
    provides such a method in the @ISA heirarchy, not just the first one
    that is found. "inwardly" starts its search at the topmost class; that
    is, the class name (or type of the object) provided, and starts
    searching down towards superclasses. "outwardly" starts its search at
    the base-most superclass, searching upward before finally ending at the
    topmost class.

    In the case of multiple inheritance, subclasses are always searched in
    the order that they appear in the @ISA array.

    In the case that multiple inheritance brings the same subclass in more
    than once, they are arranged into a consistent order. That is,
    "inwardly" ensures that no superclass will be searched until every
    subclass that uses it has been searched first; while "outwardly" ensures
    that no superclass will be searched before every subclass that it uses
    has been searched already.

AUTHOR
    Paul Evans <leonerd@leonerd.org.uk>

