Does Perl 6 have a built-in tool to make a deep copy of a nested data structure?
Added example:
my %hash_A = (
a => {
aa => [ 1, 2, 3, 4, 5 ],
bb => { aaa => 1, bbb => 2 },
},
);
my %hash_B = %hash_A;
#my %hash_B = %hash_A.clone; # same result
%hash_B<a><aa>[2] = 735;
say %hash_A<a><aa>[2]; # says "735" but would like get "3"
The dirty way:
which gives you:
If you eval input from external source, always remember to check it first. Anyway, using EVAL is dangerous and should be avoided.
Use
.clone
and.deepmap
to request a copy/deep-copy of a data-structure. But don't bet on it. Any object can define its own.clone
method and do whatever it wants with it. If you must mutate and therefore must clone, make sure you test your program with large datasets. Bad algorithms can render a program virtually useless in production use.