title: is_deeply test ignoring array order?
body: <p>I am looking for a test routine like <code>is_deeply</code> in <a href="http://search.cpan.org/~mschwern/Test-Simple-0.98/lib/Test/More.pm" rel="noreferrer"><code>Test::More</code></a>.
  There's <code>cmp_bag</code> from <a href="http://search.cpan.org/~rjbs/Test-Deep-0.109/lib/Test/Deep.pm" rel="noreferrer"><code>Test::Deep</code></a> but this only operates on the array itself, not the horribly large hash-of-arrays-of-hashes data structure I'm passing in. Is there something like:</p>
  
  <pre><code>is_deeply $got, $expected, {
      array =&gt; cmp_bag,
      # and other configuration...
  }, "Ugly data structure should be the same, barring array order.";
  </code></pre>
  
  <p><strong>Clarification</strong></p>
  
  <p>I could recursively delve into my <code>$expected</code> and <code>$got</code> objects and convert the arrays into bag objects:</p>
  
  <pre><code>sub bagIt {
      my $obj = shift;
      switch (ref($obj)) {
          case "ARRAY"    {
              return bag([
                  map { $_ = bagIt($_) }
                  @$obj
              ]);
          } case "HASH"   {
              return {
                  map { $_ =&gt; bagIt( $obj-&gt;{$_} ) }
                  keys %$obj
              };
          } else {
              return $obj;
          }
      }
  }
  </code></pre>
  
  <p>I'm wondering if there is a way to tell some variant of <code>is_deeply</code> to do this for me.</p>