Vad är filformatet PM?
En .pm-fil är en Perl-modul - en källkodsfil i klartext som paketerar återanvändbar Perl-kod i ett namngivet namnrymd (namespace). Modulsystemet introducerades med Perl 5 år 1994 och förblir grunden för CPAN-ekosystemet, som hyser hundratusentals .pm-moduler.
Varje .pm-fil deklarerar sin namnrymd nära toppen med ett package-uttryck (t.ex. package HTTP::Tiny;) och slutar konventionellt med en naken 1; så att use eller require kan verifiera en lyckad laddning. Det finns inget binärt magiskt nummer; filen identifieras av sin filändelse .pm och förekomsten av en package-deklaration.
Modulnamn och filsökväg är direkt länkade: Foo::Bar mappar till Foo/Bar.pm någonstans i Perls @INC-sökväg. En modul laddas av ett .pl-skript eller en annan modul med use Module::Name; eller require "Module/Name.pm".
Typiskt innehåll inkluderar:
- Exporterade subrutiner och variabler (vanligtvis hanterade med
Exporter) - Objektorienterade klassdefinitioner
- Inbäddade
.pod-dokumentationsblock - En versionsdeklaration via
our $VERSION = '1.00';
Moduler tolkas vid körning; .pmc-filer är en valfri cache för bytekod. MIME-typen är text/x-perl och kodningen är vanligtvis UTF-8 eller ASCII, deklarerad med use utf8; vid behov.
Säkerhet & trygghet
RISK: MEDIUMEn .pm-fil är klartext och säker att läsa eller öppna i en redigerare - den kan inte agera på egen hand. Risken ligger i att KÖRA den: Perl-moduler är exekverbar kod som kan läsa/skriva filer, köra skalkommandon och göra nätverksanrop, och kod kan till och med köras vid laddning (BEGIN-block, import-logik) i samma ögonblick som ett skript gör «use Module;». Hantera därför en okänd .pm som vilket program som helst: läs den innan du laddar den, och kör inte Perl-kod från källor du inte litar på. Filen som ligger på disken är ofarlig.
Formatdetaljer
i ett nötskal- Adobe PageMaker-publikation (.pm) - Äldre Aldus/Adobe PageMaker-dokument för desktop publishing använde filändelsen .pm (senare .pm5/.pm6/.p65/.pmd); öppna/konvertera i Adobe InDesign.
Program som öppnar PM-filer
Tekniska detaljer
djup specifikation| MIME-typ | text/x-perl (även accepterat: application/x-perl, text/plain) |
| Kodning | UTF-8 eller ASCII; källkod som inte är ASCII kräver en explicit `use utf8;`-deklaration |
| Filstruktur | `package`-deklaration → importer (`use`/`require`) → subrutiner och variabler → valfri `Exporter`-inställning → inbäddad POD-dokumentation → avslutande sant värde (`1;`) |
| Magiska byte / signatur | Ingen; ingen binär signatur. Identifieras av filändelsen `.pm` och ett `package`-uttryck nära toppen. En valfri UTF-8 BOM (EF BB BF) kan föregå första raden. |
| Namnrymd-till-sökväg-mappning | Modulnamn mappar direkt till dess filsökväg: `Foo::Bar` motsvarar `Foo/Bar.pm` i Perls `@INC`-sökväg |
| Laddningsmekanism | Laddning vid kompilering via `use Module;`; laddning vid körning via `require 'Module/Name.pm'` eller `require Module::Name` |
| Terminator för sant värde | Måste sluta med ett sant värde - konventionellt en naken `1;` - så att anroparen kan bekräfta att filen laddades utan fel |
| Versionsmål | Minsta Perl-version deklareras med `use v5.xx;` eller `use 5.010;`; har ingen egen filformatsversion |
| Typisk filstorlek | 1 KB - 200 KB per modul |
| Exportmekanism | Subrutiner och variabler exponeras selektivt för anropare via modulen `Exporter` med hjälp av arrayerna `@EXPORT` och `@EXPORT_OK` |
| Inbäddning av dokumentation | Inline Plain Old Documentation (POD)-block, avgränsade av `=pod` / `=cut`; tolkas av `perldoc` och POD-renderare |
| Bytekod-cache | Perl kan lagra en förkompilerad form bredvid källkoden som en `.pmc`-fil; själva `.pm`-filen kompileras aldrig till en fristående binär |
| Obfuskering / kryptering | Klartext som standard; valfri källkodsfiltrering via moduler som `Filter::Crypto` eller `Filter::Util::Call` |
| Associerade plattformar | Linux, macOS, Windows (Strawberry Perl / ActivePerl) och alla andra operativsystem där Perl är installerat |
| Släppt | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Senaste version | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Öppen standard | Ja · royaltyfri |
| Specifikation | perldoc.perl.org |
PM-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om PM-filer.