Qu'est-ce que le format de fichier PM ?
Un fichier .pm est un module Perl - un fichier source en texte brut qui regroupe du code Perl réutilisable dans un espace de noms (namespace) nommé. Le système de modules a été introduit avec Perl 5 en 1994 et reste le fondement de l'écosystème CPAN, qui héberge des centaines de milliers de modules .pm.
Chaque fichier .pm déclare son espace de noms vers le haut du fichier avec une instruction package (par exemple, package HTTP::Tiny;) et se termine conventionnellement par un simple 1; afin que use ou require puisse vérifier le succès du chargement. Il n'y a pas de nombre magique binaire ; le fichier est identifié par son extension .pm et la présence d'une déclaration package.
Le nom du module et le chemin du fichier sont directement liés : Foo::Bar correspond à Foo/Bar.pm quelque part dans le chemin de recherche @INC de Perl. Un module est chargé par un script .pl ou un autre module avec use Module::Name; ou require "Module/Name.pm".
Le contenu typique comprend :
- Des sous-programmes et variables exportés (généralement gérés avec
Exporter) - Des définitions de classes orientées objet
- Des blocs de documentation
.podintégrés - Une déclaration de version via
our $VERSION = '1.00';
Les modules sont interprétés au moment de l'exécution ; les fichiers .pmc sont un cache optionnel de byte-code. Le type MIME est text/x-perl et l'encodage est généralement UTF-8 ou ASCII, déclaré avec use utf8; si nécessaire.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .pm est du texte brut et peut être lu ou ouvert en toute sécurité dans un éditeur - il ne peut pas agir par lui-même. Le risque réside dans son EXÉCUTION : les modules Perl sont du code exécutable qui peut lire/écrire des fichiers, lancer des commandes shell et effectuer des appels réseau, et le code peut même s'exécuter au moment du chargement (blocs BEGIN, logique d'importation) dès qu'un script fait « use Module; ». Traitez donc un .pm non fiable comme n'importe quel programme : lisez-le avant de le charger, et n'exécutez pas de code Perl provenant de sources auxquelles vous ne faites pas confiance. Le fichier stocké sur le disque est inoffensif.
Détails du format
en bref- Publication Adobe PageMaker (.pm) - Les anciens documents de PAO Aldus/Adobe PageMaker utilisaient l'extension .pm (plus tard .pm5/.pm6/.p65/.pmd) ; ouvrez-les ou convertissez-les dans Adobe InDesign.
Programmes qui ouvrent les fichiers PM
Détails techniques
spécifications approfondies| Type MIME | text/x-perl (également acceptés : application/x-perl, text/plain) |
| Encodage | UTF-8 ou ASCII ; les sources non-ASCII nécessitent une déclaration explicite `use utf8;` |
| Structure du fichier | déclaration `package` → importations (`use`/`require`) → sous-programmes et variables → configuration optionnelle `Exporter` → docs POD intégrées → valeur vraie finale (`1;`) |
| Octets magiques / signature | Aucun ; pas de signature binaire. Identifié par l'extension `.pm` et une instruction `package` vers le début. Un BOM UTF-8 optionnel (EF BB BF) peut précéder la première ligne. |
| Correspondance espace de noms/chemin | Le nom du module correspond directement à son chemin de fichier : `Foo::Bar` se résout en `Foo/Bar.pm` dans le chemin de recherche `@INC` de Perl |
| Mécanisme de chargement | Chargement au moment de la compilation via `use Module;` ; chargement à l'exécution via `require 'Module/Name.pm'` ou `require Module::Name` |
| Terminateur de valeur vraie | Doit se terminer par une valeur vraie - conventionnellement un simple `1;` - pour que l'appelant puisse confirmer que le fichier s'est chargé sans erreur |
| Ciblage de version | Version minimale de Perl déclarée avec `use v5.xx;` ou `use 5.010;` ; pas de version propre au format de fichier |
| Taille de fichier typique | 1 Ko - 200 Ko par module |
| Mécanisme d'exportation | Les sous-programmes et variables sont sélectivement exposés aux appelants via le module `Exporter` en utilisant les tableaux `@EXPORT` et `@EXPORT_OK` |
| Documentation intégrée | Blocs Plain Old Documentation (POD) en ligne, délimités par `=pod` / `=cut` ; analysés par `perldoc` et les moteurs de rendu POD |
| Cache de byte-code | Perl peut stocker une forme pré-compilée à côté de la source sous forme de fichier `.pmc` ; le `.pm` lui-même n'est jamais compilé en un binaire autonome |
| Obscurcissement / chiffrement | Texte brut par défaut ; filtrage de source optionnel via des modules tels que `Filter::Crypto` ou `Filter::Util::Call` |
| Plateformes associées | Linux, macOS, Windows (Strawberry Perl / ActivePerl), et tout autre OS où Perl est installé |
| Publié | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Dernière version | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Standard ouvert | Oui · libre de droits |
| Spécification | perldoc.perl.org |
Conversions PM
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers PM.