2010-06-04 13 views
6

Al usar keys %:: para obtener una lista de los espacios de nombres raíz cargados actualmente, el paquete Internals:: se carga de manera predeterminada (junto con UNIVERSAL:: y algunos otros). Sin embargo, no he encontrado ninguna documentación para las funciones en Internals::¿Dónde está la documentación para el paquete integrado `Internals ::` de Perl?

keys %{Internals::} vuelve SvREFCNT hv_clear_placeholders hash_seed SvREADONLY HvREHASH rehash_seed

Todo esto probablemente se pueden consultar en la documentación de la API C de Perl, pero ¿hay alguna documentación de nivel de Perl para ellos? ¿El paquete es estable? Es utilizado por varios módulos principales (Hash::Util para uno), así que me lo imagino, pero la falta de documentación es un poco problemática.

No vi Internals.pm en la distribución de Perl (¿diferente nombre quizás?), Y no es el módulo Internals en CPAN.

Nota: Entiendo completamente que las funciones en Internals:: son potencialmente peligrosas, y no tengo ningún uso particular en mente. Estaba leyendo a través de la fuente Hash::Util y lo encontré.

Respuesta

5

IIRC el código no es Internals.pm sino libinternals.c. Parece que solían estar en universal.c in Perl 5.8 pero se migraron.

Según 03/2009 y Perl 5.10 no se documentaron según this perlmonks thread.

También, en el mismo hilo, ysth estados:

cosas indocumentados en universal.c no deberán tomarse para; deberían solo ser utilizados por módulos centrales. Ellos no están documentados a propósito, para permitir que se cambien cada vez que sea necesario y . Para esos fines, el código es suficiente documentación.

+1

los comentarios en 'universal.c' son geniales:'/* Esto es algo peligroso. */'...'/* Espero que realmente sepas lo que estás haciendo. */' –

+0

" ... el código es una documentación suficientemente buena "- eso no impide que las personas escriban código en comparación con la implementación actual y que se rompa cuando se realizan cambios. – Ether

+0

El enlace que proporcionó anteriormente - http://perlbin.sourceforge.net/perlcompiler/perl.internals.pdf - parece interesante, aunque parece bastante obsoleto. – Ether

Cuestiones relacionadas