O que é o formato de ficheiro PM?
Um arquivo .pm é um módulo Perl - um arquivo de origem em texto simples que empacota código Perl reutilizável em um namespace nomeado. O sistema de módulos foi introduzido com o Perl 5 em 1994 e continua sendo a base do ecossistema CPAN, que hospeda centenas de milhares de módulos .pm.
Todo arquivo .pm declara seu namespace perto do topo com uma instrução package (ex: package HTTP::Tiny;) e convencionalmente termina com um 1; isolado para que o use ou require possa verificar um carregamento bem-sucedido. Não há um número mágico binário; o arquivo é identificado por sua extensão .pm e pela presença de uma declaração package.
O nome do módulo e o caminho do arquivo estão diretamente ligados: Foo::Bar mapeia para Foo/Bar.pm em algum lugar no caminho de busca @INC do Perl. Um módulo é carregado por um script .pl ou outro módulo com use Module::Name; ou require "Module/Name.pm".
Conteúdos típicos incluem:
- Sub-rotinas e variáveis exportadas (geralmente gerenciadas com
Exporter) - Definições de classes orientadas a objetos
- Blocos de documentação
.podincorporados - Uma declaração de versão via
our $VERSION = '1.00';
Os módulos são interpretados em tempo de execução; arquivos .pmc são um cache opcional de byte-code. O tipo MIME é text/x-perl e a codificação é geralmente UTF-8 ou ASCII, declarada com use utf8; quando necessário.
Segurança e proteção
RISCO: MEDIUMUm arquivo .pm é texto simples e seguro para ler ou abrir em um editor - ele não pode agir por si só. O risco está em EXECUTÁ-LO: módulos Perl são código executável que pode ler/gravar arquivos, executar comandos de shell e fazer chamadas de rede, e o código pode até ser executado no momento do carregamento (blocos BEGIN, lógica de importação) no instante em que um script faz «use Module;». Portanto, trate um .pm não confiável como qualquer programa: leia-o antes de carregá-lo e não execute código Perl de fontes em que não confia. O arquivo parado no disco é inofensivo.
Detalhes do formato
em resumo- Publicação Adobe PageMaker (.pm) - Documentos antigos de editoração eletrônica do Aldus/Adobe PageMaker usavam a extensão .pm (posteriormente .pm5/.pm6/.p65/.pmd); abra ou converta no Adobe InDesign.
Programas que abrem arquivos PM
Detalhes técnicos
especificação profunda| Tipo MIME | text/x-perl (também aceito: application/x-perl, text/plain) |
| Codificação | UTF-8 ou ASCII; fontes não-ASCII requerem uma declaração explícita `use utf8;` |
| Estrutura do arquivo | declaração `package` → importações (`use`/`require`) → sub-rotinas e variáveis → configuração opcional de `Exporter` → documentos POD incorporados → valor verdadeiro final (`1;`) |
| Assinatura / Magic bytes | Nenhuma; sem assinatura binária. Identificado pela extensão `.pm` e uma declaração `package` perto do topo. Um BOM UTF-8 opcional (EF BB BF) pode preceder a primeira linha. |
| Mapeamento de namespace para caminho | O nome do módulo mapeia diretamente para o caminho do arquivo: `Foo::Bar` resolve para `Foo/Bar.pm` no caminho de busca `@INC` do Perl |
| Mecanismo de carregamento | Carregamento em tempo de compilação via `use Module;`; carregamento em tempo de execução via `require 'Module/Name.pm'` ou `require Module::Name` |
| Terminador de valor verdadeiro | Deve terminar com um valor verdadeiro - convencionalmente um `1;` isolado - para que o chamador possa confirmar que o arquivo foi carregado sem erros |
| Direcionamento de versão | Versão mínima do Perl declarada com `use v5.xx;` ou `use 5.010;`; não possui versão de formato de arquivo própria |
| Tamanho típico do arquivo | 1 KB - 200 KB por módulo |
| Mecanismo de exportação | Sub-rotinas e variáveis são expostas seletivamente aos chamadores via módulo `Exporter` usando as arrays `@EXPORT` e `@EXPORT_OK` |
| Incorporação de documentação | Blocos inline de Plain Old Documentation (POD), delimitados por `=pod` / `=cut`; analisados por `perldoc` e renderizadores POD |
| Cache de byte-code | O Perl pode armazenar uma forma pré-compilada ao lado do código-fonte como um arquivo `.pmc`; o `.pm` em si nunca é compilado para um binário autônomo |
| Ofuscação / Criptografia | Texto simples por padrão; filtragem de fonte opcional via módulos como `Filter::Crypto` ou `Filter::Util::Call` |
| Plataformas associadas | Linux, macOS, Windows (Strawberry Perl / ActivePerl) e qualquer outro SO onde o Perl esteja instalado |
| Lançado | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Versão mais recente | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Padrão aberto | Sim · livre de royalties |
| Especificação | perldoc.perl.org |
Conversões de PM
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos PM.