in reply to Shared Memory and Child Processes

Quoting the IPC::Shareable manual page:
destroy
If set to a true value, the shared memory segment underlying the data binding will be removed when the process calling tie() exits (gracefully)[3]. Use this option with care. In particular you should not use this option in a program that will fork after binding the data. On the other hand, shared memory is a finite resource and should be released if it is not needed. The default is false
So, perhaps you shouldn't.