¿Qué es el formato de archivo PM?
Un archivo .pm es un módulo de Perl: un archivo fuente de texto plano que empaqueta código de Perl reutilizable en un espacio de nombres (namespace). El sistema de módulos se introdujo con Perl 5 en 1994 y sigue siendo la base del ecosistema CPAN, que alberga cientos de miles de módulos .pm.
Cada archivo .pm declara su espacio de nombres cerca de la parte superior con una sentencia package (por ejemplo, package HTTP::Tiny;) y convencionalmente termina con un 1; simple para que use o require puedan verificar una carga exitosa. No existe un número mágico binario; el archivo se identifica por su extensión .pm y la presencia de una declaración package.
El nombre del módulo y la ruta del archivo están vinculados directamente: Foo::Bar apunta a Foo/Bar.pm en algún lugar de la ruta de búsqueda @INC de Perl. Un módulo es cargado por un script .pl u otro módulo mediante use Module::Name; o require "Module/Name.pm".
Los contenidos típicos incluyen:
- Subrutinas y variables exportadas (generalmente gestionadas con
Exporter) - Definiciones de clases orientadas a objetos
- Bloques de documentación
.podincrustados - Una declaración de versión mediante
our $VERSION = '1.00';
Los módulos se interpretan en tiempo de ejecución; los archivos .pmc son una caché opcional de código de bytes (byte-code). El tipo MIME es text/x-perl y la codificación suele ser UTF-8 o ASCII, declarada con use utf8; cuando es necesario.
Seguridad y protección
RIESGO: MEDIUMUn archivo .pm es texto plano y es seguro de leer o abrir en un editor; no puede actuar por sí mismo. El riesgo está en EJECUTARLO: los módulos de Perl son código ejecutable que puede leer/escribir archivos, ejecutar comandos de sistema y realizar llamadas de red, y el código puede incluso ejecutarse al momento de la carga (bloques BEGIN, lógica de importación) en el instante en que un script hace «use Module;». Por lo tanto, trate un .pm no confiable como cualquier programa: léalo antes de cargarlo y no ejecute código Perl de fuentes en las que no confíe. El archivo guardado en el disco es inofensivo.
Detalles del formato
en pocas palabras- Publicación de Adobe PageMaker (.pm) - Los documentos antiguos de autoedición de Aldus/Adobe PageMaker utilizaban la extensión .pm (más tarde .pm5/.pm6/.p65/.pmd); abrir/convertir en Adobe InDesign.
Programas que abren archivos PM
Detalles técnicos
especificación profunda| Tipo MIME | text/x-perl (también se acepta: application/x-perl, text/plain) |
| Codificación | UTF-8 o ASCII; el código fuente que no sea ASCII requiere una declaración explícita `use utf8;` |
| Estructura del archivo | declaración `package` → importaciones (`use`/`require`) → subrutinas y variables → configuración opcional de `Exporter` → documentos POD incrustados → valor verdadero final (`1;`) |
| Bytes mágicos / firma | Ninguno; sin firma binaria. Identificado por la extensión `.pm` y una sentencia `package` cerca de la parte superior. Un BOM UTF-8 opcional (EF BB BF) puede preceder a la primera línea. |
| Mapeo de espacio de nombres a ruta | El nombre del módulo se mapea directamente a su ruta de archivo: `Foo::Bar` se resuelve como `Foo/Bar.pm` en la ruta de búsqueda `@INC` de Perl |
| Mecanismo de carga | Carga en tiempo de compilación mediante `use Module;`; carga en tiempo de ejecución mediante `require 'Module/Name.pm'` o `require Module::Name` |
| Terminador de valor verdadero | Debe terminar con un valor verdadero -convencionalmente un `1;` simple- para que el llamador pueda confirmar que el archivo se cargó sin errores |
| Versión de destino | Versión mínima de Perl declarada con `use v5.xx;` o `use 5.010;`; no tiene versión de formato de archivo propia |
| Tamaño típico de archivo | 1 KB - 200 KB por módulo |
| Mecanismo de exportación | Las subrutinas y variables se exponen selectivamente a los llamadores a través del módulo `Exporter` usando los arreglos `@EXPORT` y `@EXPORT_OK` |
| Incrustación de documentación | Bloques de Plain Old Documentation (POD) en línea, delimitados por `=pod` / `=cut`; analizados por `perldoc` y renderizadores de POD |
| Caché de código de bytes | Perl puede almacenar una forma precompilada junto al código fuente como un archivo `.pmc`; el `.pm` en sí nunca se compila en un binario independiente |
| Ofuscación / cifrado | Texto plano por defecto; filtrado de fuente opcional mediante módulos como `Filter::Crypto` o `Filter::Util::Call` |
| Plataformas asociadas | Linux, macOS, Windows (Strawberry Perl / ActivePerl) y cualquier otro SO donde Perl esté instalado |
| Lanzado | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Última versión | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Estándar abierto | Sí · libre de regalías |
| Especificación | perldoc.perl.org |
Conversiones de PM
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos PM.