There is a clone module on CPAN.

Take a look at it. It will do what you need.

-David W.

-----Original Message-----
From: david [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 11, 2003 4:54 PM
To: [EMAIL PROTECTED]
Subject: Re: Inheritance and clone()


Rob Dixon wrote:

>
> you couldn't get a new object by simply writing:
>
>     my $object2 = $object;
>
> as what you would have is simply a second handle
> to the same object, and all changes to one would
> be echoed in the other. You would have to do:
>
>     my $object2 = clone ($object);
>
>     sub clone {
>         my $original = shift;
>         my @newdata = @$original;
>         return [EMAIL PROTECTED];
>     }
>

this will not clone the object for you. the function only makes a copy of
the referenced data the object represent and then return another ref back
to the caller.

at it's min. you need:

sub clone{
        my $obj = shift;
        return bless [EMAIL PROTECTED] => ref $obj;
}

or the object will be lost. this is still, by far, not perfect. it only does
a shadow copy, if $obj contains reference to other objects, the clone will
not be distinct from the orginal object.

david

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to