This is what is happening:
- Perl forks itself. The main program then wait()'s
for the child to finish.
- The child gets a copy of everything that is in the
parents environment (actually, it shares the memory using
copy-on-write, but thats more detail than we need right now).
- When the child goes away, everything that was in the
child's copy is destroyed.
- When the parent resumes operation, it has the same
environment as before it forked since nothing ever actually
changed it's copy.
If you need to have a second process alter the memory
or environment of another process, you need to look into
programming with threads or shared memory. Your other
alternative would be inter-process communication.