Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

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
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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2014-07-11 23:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (236 votes), past polls