• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 201
  • Last Modified:

Copying reference data without dereferencing

In a program I am writing, I have a 3D array of hashes implemented through extensive use of references.  One of my procedures makes changes to the underlying data in that structure.  However, I would like to keep a second copy of the original structure in memory in order to restore it if needed.  I could do this with loops by dereferencing every element of the structure but I figure this is expensive in terms of processing time.

Is there a way to simply take a reference to a structure and generate a second reference to a completely separate but identical structure?  I suspect there is not, but if there is, it would be worth 100 points.

  • 2
1 Solution
perldoc -q copy
Found in perlfaq4.pod

How do I print out or copy a recursive data structure?

The Data::Dumper module on CPAN is nice for printing out
data structures, and FreezeThaw for copying them.  For example:

    use FreezeThaw qw(freeze thaw);
    $new = thaw freeze $old;

Where $old can be (a reference to) any kind of data structure you'd like.
It will be deeply copied.
colindAuthor Commented:
Basically, ozo, you're the king.

Why don't you claim your points?

If so, maybe the FAQ should deserve the royaltys
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now