in reply to WHY copying does happen (fork)

Try looking at the variables before and after with Devel::Peek. That may tell you what changed.