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

copying and comparing objects

by nop (Hermit)
on Feb 02, 2001 at 02:55 UTC ( #55890=perlquestion: print w/replies, xml ) Need Help??
nop has asked for the wisdom of the Perl Monks concerning the following question:

Am I missing something here? I want to use dclone to copy my object, and overloaded == and != to compare my object.

Here's my test code:
my $raw = Vhash->new(undefined=>0, i=>$p_ids, v=>[qw(so sd no nd)], d=>[Date::range($startdate, $validdate)]); my $xx = $raw->copy; if ($xx == $raw) {print "hurrah\n";} else {print "nope\n";}
Why is my comparison failing here ("nope")?

Here's the relevant object code:
package Vhash; use strict; use warnings; use Carp; use Data::Dumper; use Storable qw/freeze dclone/; use overload '==' => \&overload_eq; sub overload_eq { return freeze($_[0]) eq freeze($_[1]) } use overload '!=' => \&overload_ne; sub overload_ne { return freeze($_[0]) eq freeze($_[1]) } my $joinchar = ","; sub new { my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; bless ($self, $class); $self->init(@_); return $self; } sub copy { my ($self) = @_; my $new = dclone($self); bless($new, ref($self)); return $new; } ...more...

Replies are listed 'Best First'.
Re: copying and comparing objects
by Fastolfe (Vicar) on Feb 02, 2001 at 03:09 UTC
    Try setting $Storable::canonical to true. The "CANONICAL REPRESENTATION" section of the Storable documentation briefly goes over comparing frozen data in this fashion.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://55890]
Approved by root
Tanktalus has to figure out why his cb talker isn't working :(
[choroba]: https?
[choroba]: That was at least why my cb talker wasn't working.
[Tanktalus]: curious, then, why the reader works :)
[Tanktalus]: or posting the last hour of cb... well, maybe I should double check that first :)
[Tanktalus]: yup, it's working. :)
[choroba]: https://github. com/choroba/pm-cb/ commit/7b57f513596 7bf8a29d74f1c307de 9a76894cdcf
[choroba]: Also, a thread here on PM mentioned that one of or should now work

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2018-07-15 21:28 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (326 votes). Check out past polls.