Solution: http://perlmonks.org/?node_id=1068407

---- Hey, I have a nested structure that I want to test. The problem that I'm having is I can't figure out how to tell Test::Deep to use a regex for hashref keys. In the example below, the "markets" hashref's keys can be any string, and ideally I want something like re('.') for the key.

EDIT: { There seems to be some confusion here. The only reason I said I wanted a re('.') for the key is because the key can be anything and I need to tell Test::Deep to inspect the value of that key. }

How do I tell it to do each hashref's value, akin to the array_each() for arrays? I'm not set in stone regarding a module, so if anyone has better suggestions to accomplish this, please tell me.
{ 'markets' => { re('.') => { 'primaryname' => re('.'), 'volume' => re('^[-+.\d]+$'), 'lasttradeprice' => re('^[-+.\d]+$'), 'marketid' => re('^\d+$'), 'secondarycode' => re('.'), 'primarycode' => re('.'), 'lasttradetime' => re('.'), 'label' => re('.'), 'secondaryname' => re('.'), 'buyorders' => array_each( { 'quantity' => re('^[-+.\d]+$'), 'price' => re('^[-+.\d]+$'), 'total' => re('^[-+.\d]+$'), }, ), 'sellorders' => array_each( { 'quantity' => re('^[-+.\d]+$'), 'price' => re('^[-+.\d]+$'), 'total' => re('^[-+.\d]+$'), }, ), 'recenttrades' => array_each( { 'quantity' => re('^[-+.\d]+$'), 'price' => re('^[-+.\d]+$'), 'total' => re('^[-+.\d]+$'), 'id' => re('.'), 'time' => re('.'), }, ), }, }, }

In reply to [SOLVED] Test::Deep regex on hash keys by Zoffix

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.