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.