in reply to Shallow vs deep copy (Was Re^3: hash ref mind blow)
in thread hash ref mind blow

Yeah, I thought that %{ _ref_ } created an alias, but now I've learned it just shallow copies the struct.

It's coincidental, but everytime I used it as reference passed to subs, I added subkeys and everything worked as an alias. To my surprise, when I added a root key to %copy and it didn't change %hash my world came tumbling down.

So it's back to $$copy->{key} stuff, as

use strict; local our %copy; *copy = \%hash;

Looks so unscoped to my personal perl taste. And Data::Alias will not cpan into my Strawberry perl, complaining about requiring perl 5.8.9 on Win32...

BTW ikegami, wow!

Now... I want to know what package does those hash textgraphs you posted. Cos Data::Dumper doesn't get even close to that kind of representation!

Replies are listed 'Best First'.
Re^2: Shallow vs deep copy (Was Re^3: hash ref mind blow)
by ikegami (Patriarch) on Sep 25, 2008 at 21:40 UTC
    local our %copy; *copy = \%hash;

    should be

    our %copy; local *copy = \%hash;

    Or if you prefer,

    local *copy = \%hash; our %copy;

    What's the point of localizing %copy? Depending on whether you do it before or after the aliasing, you either localize a variable you never use, or you localize %hash.

    But you do modify *copy, so you should localize that.

    I want to know what package does those hash textgraphs you posted.

    Notepad.