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...

Comment on copying and comparing objects
Select or Download Code
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
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2015-11-30 11:37 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (769 votes), past polls