in reply to Re: How to create a new array with the same name as an existing one in a loop?
in thread How to create a new array with the same name as an existing one in a loop?

... = [@role_records];

MrSnrub: Note that this is a shallow copy.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^3: How to create a new array with the same name as an existing one in a loop?
by MrSnrub (Beadle) on Aug 15, 2021 at 18:27 UTC
    how do you do a deep copy? i want to be able to copy everything.
      i want to be able to copy everything.

      Why? Why not just create a new array reference each time through the loop? Again, I don't think we have a good idea of your true requirement. Please see Short, Self-Contained, Correct Example.

      Update: In any event, searching with "deep copy" on MetaCPAN brings up Clone (update: and Clone::PP), about which I know nothing.


      Give a man a fish:  <%-{-{-{-<

      There are various modules offering a "clone" routine, even in core.

      But the question is tricky because details are important if blessed objects ° are involved or speed matters.

      In the end you need to know what you really want.

      Update

      °) To be more specific how do you clone an arbitrary object "correctly" if the class doesn't provide a clone method?

      And what is "correctly" and "good enough" ? :)

      Update

      For instance an array @bus containing objects of persons sitting in a bus like say $Rolf and $MrSnrub.

      After copying the bus, it'll depend on the application if you really want to clone the persons too.

      I'd consider creating a clone of person highly unwanted. Especially identity theft of $Rolf. ;)

      If I'm the passenger in two different busses, you'd want to update personal information like addresses only once...

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

        «It doesn't and you can't I won't and it don't It hasn't, it isn't, it even ain't And it shouldn't, it couldn't!" He told me "no, no, no!" I told him "yes, yes, yes!" I said: "I do it all the time Ain't this boogie a mess"» (FZ)

        «The Crux of the Biscuit is the Apostrophe»

      «…i want to be able to copy everything…»

      Probably this is possible:

      use MyClass; use Storable qw(dclone); my $object = MyClass->new(); my $clone = dclone($object); # NB.: Untested

      But I doubt that you really want this.

      «The Crux of the Biscuit is the Apostrophe»