Perl se ejecuta en su propia máquina virtual, así que no tiene (en principio) acceso directo a la memoria que ocupan las variables.
Si haces un
$ perl -E '$x = "hola"; say \$x'
SCALAR(0x77b9f8)
ese valor que sale se refiere a la memoria virtual del intérprete de perl, no a la memoria física.
Y un programa no puede acceder de forma arbitraria a la memoria de otro. Generaciones de informáticos han tenido que sufrir las calamidades de infecciones, troyanos, bombas, ladrones y fisgones, hasta darse cuenta de que el futuro estaba en los sistemas operativos que no permitían compartir memoria entre aplicaciones.
Aunque, claro, siempre hay una manera de hacerlo.
- Con hebras de ejecución simultánea (threads) se pueden compartir variables entre las hebras.
- Si el sistema operativo es decente y lo soporta, se puede usar el sistema IPC de SysV (compartir memoria y semáforos). Por ejemplo, el módulo IPC::ShareLite permite compartir hasta 4 MB de memoria entre programas (en Linux)
- Se pueden usar sockets entre procesos
- Usando un disco RAM, y escribiendo y leyendo archivos en él, es lo más rápido, simple y barato
- (algún método más que no recuerdo o no conozco)