NAME
    Hash::Dispatch - Find CODE in a hash (hashlike)

VERSION
    version 0.0010

SYNOPSIS
        $dispatch = Hash::Dispatch->dispatch(

            'xyzzy' => sub {
                return 'xyzzy';
            },

            qr/.../ => 'xyzzy',

            ...

        );

        $result = $dispatch->dispatch( 'xyzzy' );

        $result->value->( ... );

DESCRIPTION
    Hash::Dispatch is a tool for creating a hash-like lookup for returning a
    CODE reference

    It is hash-like because a query against the dispatcher will only return
    once a CODE reference a found. If a key (a string or regular expression)
    maps to a string, then that will cause the lookup to begin again with
    the new value, recursing until a CODE reference is found or a deadend is
    reached:

        a => CODE0
        b => CODE1
        c => CODE2
        d => a
        qr/z/ => c

        query( a ) => CODE0
        query( b ) => CODE1
        query( d ) => CODE0
        query( xyzzy ) => CODE2
        query( j ) => undef

    Hash::Dispatch will throw an exception if it is cycling:

        a => b
        b => a

        query( a ) => {{{ Exception! }}}

USAGE
  $dispatcher = Hash::Dispatch->dispatch( ... )
    Returns a new $dispatcher with the given mapping

  $result = $dispatcher->dispatch( <query> )
    Search $dispatcher with "<query>"

    Returns an object with a "->value" method that contains the CODE
    reference

    Returns undef is nothing is found

AUTHOR
    Robert Krimen <robertkrimen@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2011 by Robert Krimen.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.