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

copying and comparing objects

by nop (Hermit)
on Feb 02, 2001 at 02:55 UTC ( [id://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?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (1)
As of 2024-04-24 13:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found