This is exactly how an array is implemented. All you really want is to be able to set each element to be the alias of the appropriate SV in memory. Arrays, in memory, are just a blob of containing a list of pointers to SVs. You're just removing yourself from that by one in that instead of having your 4MB blob of pointers by known by perl as pointers, you treat it as a string, find the pointer you want, and get the pointer to be treated as such. There already modules out there for helping with the task you've just outlined and they'll solve it better than offloading it into user code.