On 12/23/05, Juerd <[EMAIL PROTECTED]> wrote:
> Luke Palmer skribis 2005-12-23 16:16 (+0000):
> > However, I think that would be ignoring the amazing prevelance of the
> > shallow copy idioms in perl 5:
> >     [ @array ]
> >     { %hash }
>
> It's a great idiom. Not much typing, easy on the eyes and easy to
> understand.
>
> There's little, if any, reason to use a .clone method instead.

Uh, I was talking about shallow copy of arbitrary objects, not just of
arrays and hashes.

> > We could consider .clone to be the natural extension of this (and have
> > the above forms be its definition for Array and Hash).
>
> I think both shallow and deep should be possible, with an infinite
> amount of options in between. One hashref may be meant as a nested hash,
> while the other is meant as a reference to a conceptually separate hash.
> The first should be copied, the second not. How on earth we're going to
> let Perl know what we want is, in my opinion, much more interesting than
> what the default behaviour will be.
>
> Consider
>
>     my %foo = (
>         a => 41,
>         b => 15,
>         c => {
>             bar => 1,
>             baz => 1,
>             quux => 0,
>         },
>         d => \%bar,
>     );
>
> I'd want something that clones this, somewhere between shallow and deep.
> .<c> should be deep, but .<d> shallow. Perhaps this can be determined
> using some attribute, that for a referenced hash defaults to the
> opposite of what it defaults to for a literal anonymous hash.

That's an interesting idea.  A "deep reference".  I imaging you're
suggesting this because you had a situation in real life where it came
up.  Can you describe that?

Luke

Reply via email to