Che cos'è il formato di file PM?
Un file .pm è un modulo Perl - un file sorgente in formato testo semplice che raggruppa codice Perl riutilizzabile in un namespace denominato. Il sistema dei moduli è stato introdotto con Perl 5 nel 1994 e rimane la base dell'ecosistema CPAN, che ospita centinaia di migliaia di moduli .pm.
Ogni file .pm dichiara il proprio namespace all'inizio con un'istruzione package (es. package HTTP::Tiny;) e convenzionalmente termina con un 1; isolato, in modo che use o require possano verificare il corretto caricamento. Non esiste un numero magico binario; il file è identificato dalla sua estensione .pm e dalla presenza di una dichiarazione package.
Il nome del modulo e il percorso del file sono direttamente collegati: Foo::Bar corrisponde a Foo/Bar.pm in una delle directory del percorso di ricerca @INC di Perl. Un modulo viene caricato da uno script .pl o da un altro modulo tramite use Module::Name; o require "Module/Name.pm".
I contenuti tipici includono:
- Subroutine e variabili esportate (solitamente gestite con
Exporter) - Definizioni di classi orientate agli oggetti
- Blocchi di documentazione
.podincorporati - Una dichiarazione di versione tramite
our $VERSION = '1.00';
I moduli vengono interpretati a runtime; i file .pmc sono una cache opzionale di byte-code. Il tipo MIME è text/x-perl e la codifica è solitamente UTF-8 o ASCII, dichiarata con use utf8; quando necessario.
Sicurezza e incolumità
RISCHIO: MEDIUMUn file .pm è testo semplice ed è sicuro da leggere o aprire in un editor - non può agire da solo. Il rischio risiede nell'ESECUZIONE: i moduli Perl sono codice eseguibile che può leggere/scrivere file, eseguire comandi di sistema e fare chiamate di rete; il codice può persino essere eseguito al momento del caricamento (blocchi BEGIN, logica di importazione) non appena uno script esegue «use Module;». Pertanto, tratta un .pm non attendibile come qualsiasi programma: leggilo prima di caricarlo e non eseguire codice Perl da fonti di cui non ti fidi. Il file memorizzato sul disco è innocuo.
Dettagli del formato
in sintesi- Pubblicazione Adobe PageMaker (.pm) - I vecchi documenti di desktop publishing Aldus/Adobe PageMaker utilizzavano l'estensione .pm (successivamente .pm5/.pm6/.p65/.pmd); apri o converti in Adobe InDesign.
Programmi che aprono file PM
Dettagli tecnici
specifiche approfondite| Tipo MIME | text/x-perl (accettati anche: application/x-perl, text/plain) |
| Codifica | UTF-8 o ASCII; i sorgenti non-ASCII richiedono una dichiarazione esplicita `use utf8;` |
| Struttura del file | Dichiarazione `package` → importazioni (`use`/`require`) → subroutine e variabili → configurazione opzionale `Exporter` → documentazione POD incorporata → valore finale vero (`1;`) |
| Magic bytes / firma | Nessuno; nessuna firma binaria. Identificato dall'estensione `.pm` e da un'istruzione `package` all'inizio. Un BOM UTF-8 opzionale (EF BB BF) può precedere la prima riga. |
| Mappatura namespace-percorso | Il nome del modulo mappa direttamente al percorso del file: `Foo::Bar` si risolve in `Foo/Bar.pm` nel percorso di ricerca `@INC` di Perl |
| Meccanismo di caricamento | Caricamento a tempo di compilazione tramite `use Module;`; caricamento a runtime tramite `require 'Module/Name.pm'` o `require Module::Name` |
| Terminatore con valore vero | Deve terminare con un valore vero - convenzionalmente un `1;` isolato - affinché il chiamante possa confermare che il file è stato caricato senza errori |
| Targeting della versione | Versione minima di Perl dichiarata con `use v5.xx;` o `use 5.010;`; non ha una propria versione di formato file |
| Dimensione tipica del file | 1 KB - 200 KB per modulo |
| Meccanismo di esportazione | Subroutine e variabili vengono esposte selettivamente ai chiamanti tramite il modulo `Exporter` utilizzando gli array `@EXPORT` e `@EXPORT_OK` |
| Incorporamento documentazione | Blocchi inline Plain Old Documentation (POD), delimitati da `=pod` / `=cut`; analizzati da `perldoc` e renderizzatori POD |
| Cache byte-code | Perl può memorizzare una forma pre-compilata accanto al sorgente come file `.pmc`; il file `.pm` stesso non viene mai compilato in un binario autonomo |
| Offuscamento / crittografia | Testo semplice per impostazione predefinita; filtraggio sorgente opzionale tramite moduli come `Filter::Crypto` o `Filter::Util::Call` |
| Piattaforme associate | Linux, macOS, Windows (Strawberry Perl / ActivePerl) e qualsiasi altro sistema operativo dove Perl è installato |
| Rilasciato | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Ultima versione | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Standard aperto | Sì · royalty-free |
| Specifica | perldoc.perl.org |
Conversioni PM
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file PM.