The
PL_modglobal hash isn't quite the same thing as the general symbol table. From
perlapi:
PL_modglobal is a general purpose, interpreter global HV for use by extensions that need to keep information on a per-interpreter basis. In a pinch, it can also be used as a symbol table for extensions to share data among each other. It is a good idea to use keys prefixed by the package name of the extension that owns the data.
However, storing the addresses in scalar package globals accessed from C via get_sv() would be another approach and might actually be better.