Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Compare data structures (without loops)

by Jenda (Abbot)
on Feb 19, 2003 at 17:37 UTC ( #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?


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

        Makeshifts last the longest.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://236731]
Approved by Paladin
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (10)
As of 2017-01-17 19:08 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (158 votes). Check out past polls.