Yes, assignment just copies the reference (like copying a pointer value in other languages). What you're looking for is called a "deep copy".
Storable::dclone
seems to be one solution (perldoc Storable
for more information).
Clone is another (perldoc clone
); thanks to Zaid for mentioning this in a comment.