NAME
    Hash::Match - match contents of a hash against rules

REQUIREMENTS
    This module requires Perl v5.10 or newer, and the following non-core
    modules:

    List::MoreUtils
    namespace::autoclean

SYNOPSIS
      use Hash::Match;

      my $m = Hash::Match->new( rules => { key => qr/ba/ } );

      $m->( { key => 'foo' } ); # returns false

      $m->( { key => 'bar' } ); # returns true

      $m->( { foo => 'bar' } ); # returns false

DESCRIPTION
    TODO

METHODS
  `new'
      my $m = Hash::Match->new( rules => $rules );

    Returns a function that matches a hash reference against the `$rules',
    e.g.

      if ( $m->( \%hash ) ) { ... }

    Rules
    The rules can be a hash or array reference of key-value pairs, e.g.

      {
        k_1 => 'string',    # k_1 eq 'string'
        k_2 => qr/xyz/,     # k_2 =~ qr/xyz/
        k_3 => sub { ... }, # k_3 exists and sub->($hash) is true
      }

    For a hash reference, all keys in the rule must exist in the hash and
    match the criteria specified by the rules' values.

    For an array reference, at least one key must exist and match the
    criteria specified in the rules.

    The following special keys allow you to use nested boolean operators:

    `-not'
          {
            -not => $subrules,
          }

        Negate the `$subrules'.

    `-and'
          [
            -and => \%subrules,
          ]

        True if all of the `%subrules' are true.

    `-or'
          {
            -or => \@subrules,
          }

        True if at least one of the `@subrules' is true.

AUTHOR
    Robert Rothenberg, `<rrwo at cpan.org>'

LICENSE AND COPYRIGHT
    Copyright 2014 Robert Rothenberg.

    This program is free software; you can redistribute it and/or modify it
    under the terms of the the Artistic License (2.0). You may obtain a copy
    of the full license at:

    http://www.perlfoundation.org/artistic_license_2_0

