Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Compare data structures (without loops)

by Jenda (Abbot)
on Feb 19, 2003 at 17:37 UTC ( [id://236731]=perlquestion: print w/replies, xml ) Need Help??

Jenda has asked for the wisdom of the Perl Monks concerning the following question:

Does anyone know an easy way (a module or something) to compare two data structures (iregular HoHoA)? I don't need to get the differences printed to anywhere all I'd need is to be able to test whether $A contains all the data in $B (I don't mind if $A contains some more fields).

I'd like to add a few tests to XML::DTDParser and to me the easiest solution seems to be to (when creating the tests) parse a few DTDs, dump the results to files with Data::Dumper and then the tests will try to parse the same DTDs again and see if they get the same results.

Thanks, Jenda

  • Comment on Compare data structures (without loops)

Replies are listed 'Best First'.
Re: Compare data structures (without loops)
by jasonk (Parson) on Feb 19, 2003 at 17:45 UTC

      Thanks. I know I should have looked into CPAN. I was sure to find many so I was hoping for an "I'm using this one and am happy with it" type of response. :-)

      Data::Compare looks slightly better (though neither seems to care about loops), so I'll take that one as the basis. As I said I need/want something a little different. I don't need $struct1 == $struct2, but something like $struct1 <= $struct2.

      That is "Do all hashes in $struct2 contain all the keys as those in $struct1 and with the same values? Do all arrays in $struct2 have at least as many items and those in $struct1 and do those have the same values? I don't mind if the hashes in $struct2 contain additional keys or the arrays have more item.

      I have this implemented (will then send my additions to the Data::Compare's author), but I can't think up a decent name for the function. During the development I used CompareX(), but that doesn't say anything about what it does. Does anyone have a suggestion?

      Jenda

        Maybe contains_at_least? I can't think of any better name..

        Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://236731]
Approved by Paladin
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (2)
As of 2024-04-20 04:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found