C++ or C# programs are also not able to access this memory mapped file. If it does not have a name, you need to pass the file handle to the process that is supposed to read from the file by inheriting the filehandle in a child process. Perl can easily inherit file handles, but then you need to launch the process for reading the data from your main program.
You will need to learn more about the usage of memory mapped files and IPC in general. Your approach makes things far harder than necessary, or you need to state much more about why you need to use a memory mapped file.