in reply to shared memory problems

Note that this is Sys V-specific code. BSD-based and other kernels have no such support for this type of shared memory. The most portable way to create shared memory (UN*X, that is) is to create memory using mmap() and mmap() again (with MAP_SHARED) in the other process which is obviously very different from your Sys V shmget() which is implicitly called in your tie() line (you'll also want to look into memory mutexing). Unfortunately, the IPC modules on CPAN tend to tilt more towards the Sys V side (which is not always the best thing). Of course, you can disregard my commentary if you're not planning on throwing your code from computer to computer, but, in your shoes, I might consider POSIX IPC which is partially supported in the IPC modules, partially in POSIX, and partially not at all. It's still worth looking into, though. Hopefully, Perl6 will include more POSIX stuff. The shm_open() POSIX function is simple enough, though, to punch through yourself in perl. Have fun!
AgentM Systems nor Nasca Enterprises nor Bone::Easy nor Macperl is responsible for the comments made by AgentM. Remember, you can build any logical system with NOR.