Was ist das PM-Dateiformat?
Eine .pm-Datei ist ein Perl-Modul - eine reine Quelltextdatei, die wiederverwendbaren Perl-Code in einem benannten Namensraum bündelt. Das Modulsystem wurde 1994 mit Perl 5 eingeführt und bleibt das Fundament des CPAN-Ökosystems, das Hunderttausende von .pm-Modulen beherbergt.
Jede .pm-Datei deklariert ihren Namensraum oben mit einer package-Anweisung (z. B. package HTTP::Tiny;) und endet konventionell mit einer einfachen 1;, damit use oder require ein erfolgreiches Laden verifizieren können. Es gibt keine binäre Magic Number; die Datei wird durch ihre Dateiendung .pm und das Vorhandensein einer package-Deklaration identifiziert.
Modulname und Dateipfad sind direkt verknüpft: Foo::Bar wird auf Foo/Bar.pm irgendwo im @INC-Suchpfad von Perl abgebildet. Ein Modul wird von einem .pl-Skript oder einem anderen Modul mit use Module::Name; oder require "Module/Name.pm" geladen.
Typische Inhalte sind:
- Exportierte Unterprogramme und Variablen (meist verwaltet mit
Exporter) - Objektorientierte Klassendefinitionen
- Eingebettete
.pod-Dokumentationsblöcke - Eine Versionsdeklaration via
our $VERSION = '1.00';
Module werden zur Laufzeit interpretiert; .pmc-Dateien sind ein optionaler Byte-Code-Cache. Der MIME-Typ ist text/x-perl und die Kodierung ist normalerweise UTF-8 oder ASCII, bei Bedarf deklariert mit use utf8;.
Sicherheit
RISIKO: MEDIUMEine .pm-Datei ist reiner Text und sicher zu lesen oder in einem Editor zu öffnen - sie kann von sich aus nichts bewirken. Das Risiko liegt im AUSFÜHREN: Perl-Module sind ausführbarer Code, der Dateien lesen/schreiben, Shell-Befehle ausführen und Netzwerkverbindungen herstellen kann. Code kann sogar zum Zeitpunkt des Ladens (BEGIN-Blöcke, Import-Logik) ausgeführt werden, sobald ein Skript „use Module;“ aufruft. Behandeln Sie eine nicht vertrauenswürdige .pm daher wie jedes Programm: Lesen Sie sie, bevor Sie sie laden, und führen Sie keinen Perl-Code aus Quellen aus, denen Sie nicht vertrauen. Die Datei auf der Festplatte ist harmlos.
Formatdetails
kurz gefasst- Adobe PageMaker Publikation (.pm) - Ältere Aldus/Adobe PageMaker Desktop-Publishing-Dokumente verwendeten die Endung .pm (später .pm5/.pm6/.p65/.pmd); öffnen/konvertieren in Adobe InDesign.
Programme zum Öffnen von PM-Dateien
Technische Details
technische Spezifikation| MIME-Typ | text/x-perl (auch akzeptiert: application/x-perl, text/plain) |
| Kodierung | UTF-8 oder ASCII; Nicht-ASCII-Quellcode erfordert eine explizite `use utf8;`-Deklaration |
| Dateistruktur | `package`-Deklaration → Importe (`use`/`require`) → Unterprogramme und Variablen → optionales `Exporter`-Setup → eingebettete POD-Dokumentation → abschließender Wahrheitswert (`1;`) |
| Magic Bytes / Signatur | Keine; keine binäre Signatur. Identifiziert durch die Dateiendung `.pm` und eine `package`-Anweisung nahe dem Dateianfang. Ein optionales UTF-8 BOM (EF BB BF) kann der ersten Zeile vorangestellt sein. |
| Namensraum-zu-Pfad-Zuordnung | Der Modulname wird direkt auf seinen Dateipfad abgebildet: `Foo::Bar` wird zu `Foo/Bar.pm` im `@INC`-Suchpfad von Perl aufgelöst |
| Lademechanismus | Laden zur Kompilierzeit via `use Module;`; Laden zur Laufzeit via `require 'Module/Name.pm'` oder `require Module::Name` |
| Wahrheitswert-Abschluss | Muss mit einem Wahrheitswert enden - konventionell eine einfache `1;` - damit der Aufrufer bestätigen kann, dass die Datei fehlerfrei geladen wurde |
| Versionsziel | Minimale Perl-Version deklariert mit `use v5.xx;` oder `use 5.010;`; kein eigenes Dateiformat-Versionsschema |
| Typische Dateigröße | 1 KB - 200 KB pro Modul |
| Export-Mechanismus | Unterprogramme und Variablen werden selektiv über das `Exporter`-Modul mittels `@EXPORT`- und `@EXPORT_OK`-Arrays für Aufrufer freigegeben |
| Dokumentationseinbettung | Inline-Blöcke in Plain Old Documentation (POD), begrenzt durch `=pod` / `=cut`; analysiert durch `perldoc` und POD-Renderer |
| Byte-Code-Cache | Perl kann eine vorkompilierte Form neben dem Quellcode als `.pmc`-Datei speichern; die `.pm` selbst wird nie in eine eigenständige Binärdatei kompiliert |
| Obfuskation / Verschlüsselung | Standardmäßig Klartext; optionale Quellcode-Filterung über Module wie `Filter::Crypto` oder `Filter::Util::Call` |
| Zugehörige Plattformen | Linux, macOS, Windows (Strawberry Perl / ActivePerl) und jedes andere Betriebssystem, auf dem Perl installiert ist |
| Veröffentlicht | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Neueste Version | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | perldoc.perl.org |
PM-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu PM-Dateien.