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. > 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. Juerd -- http://convolution.nl/maak_juerd_blij.html http://convolution.nl/make_juerd_happy.html http://convolution.nl/gajigu_juerd_n.html