in reply to deep copy of nested data structure

For cloning purposes, may I suggest using either the Storable modules dclone method
use Storable qw(dclone); my $copy = dclone($some_ref);
or perhaps the Clone module
use Clone qw(clone); my $copy = clone($some_ref);
Back to your problem at hand, the reason you get 1 as a result of the thaw method, is because it is documented to return an array. And an array in scalar context returns the number of elements, which in your case is 1. Try something like this: @copy = thaw freeze $hashref Autark.