http://qs321.pair.com?node_id=11116972


in reply to Re^2: Converting Hashes to Objects
in thread Converting Hashes to Objects

I was thinking that perhaps it would be easier to auto-implement these methods if you have the object as a hash, which is your input in this case.

My point was that it is an advantageous start you have there when you are given the object as a hash. So, some things, otherwise tedious, could be auto-implemented. For example, equals() a hash or equals() an object are equivalent but the hash can be cleaner and simpler. Sure objects are hashes eventually but you never know what trickery you will find in there. Same with dumping an object versus dumping a hash.

Replies are listed 'Best First'.
Re^4: Converting Hashes to Objects
by haukex (Archbishop) on May 20, 2020 at 10:23 UTC
    So, some things, otherwise tedious, could be auto-implemented. For example, equals() a hash or equals() an object are equivalent but the hash can be cleaner and simpler.

    Ah, I see what you mean. Well, I do think that some of the classic issues of comparing data structures still come up. For example, are these two hashes the same?

    my $x = { foo => { bar => "quz" } }; my $y = { foo => { bar => "quz" } };

    The answer might appear obvious, but note that $x->{foo} ne $y->{foo}! So I think it's still up to the implementor to decide how to determine whether their objects are the same. For simple recursive data structure comparisons, there's e.g. Data::Compare.