Hvad er PM-filformatet?
En .pm-fil er et Perl-modul - en kildekodefil i almindelig tekst, der pakker genanvendelig Perl-kode ind i et navngivet navnerum. Modulsystemet blev introduceret med Perl 5 i 1994 og er fortsat fundamentet i CPAN-økosystemet, som er vært for hundredtusindvis af .pm-moduler.
Enhver .pm-fil erklærer sit navnerum nær toppen med en package-erklæring (f.eks. package HTTP::Tiny;) og slutter konventionelt med et bart 1;, så use eller require kan verificere en vellykket indlæsning. Der er intet binært «magic number»; filen identificeres ved sin .pm-filtype og tilstedeværelsen af en package-erklæring.
Modulnavn og filsti er direkte forbundet: Foo::Bar mapper til Foo/Bar.pm et sted på Perls @INC-søgesti. Et modul indlæses af et .pl-script eller et andet modul med use Module::Name; eller require "Module/Name.pm".
Typisk indhold inkluderer:
- Eksporterede subrutiner og variabler (normalt administreret med
Exporter) - Objektorienterede klassedefinitioner
- Indlejrede
.pod-dokumentationsblokke - En versionserklæring via
our $VERSION = '1.00';
Moduler fortolkes ved kørsel; .pmc-filer er en valgfri byte-code-cache. MIME-typen er text/x-perl, og kodningen er normalt UTF-8 eller ASCII, erklæret med use utf8; efter behov.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .pm-fil er almindelig tekst og sikker at læse eller åbne i et redigeringsprogram - den kan ikke gøre noget i sig selv. Risikoen ligger i at KØRE den: Perl-moduler er eksekverbar kode, der kan læse/skrive filer, køre shell-kommandoer og foretage netværkskald, og kode kan endda køre ved indlæsning (BEGIN-blokke, import-logik) i det øjeblik, et script udfører «use Module;». Behandl derfor en upålidelig .pm som ethvert andet program: læs den, før du indlæser den, og kør ikke Perl-kode fra kilder, du ikke stoler på. Filen, der ligger på disken, er harmløs.
Formatdetaljer
kort fortalt- Adobe PageMaker-publikation (.pm) - Ældre Aldus/Adobe PageMaker-dokumenter brugte .pm-filtypen (senere .pm5/.pm6/.p65/.pmd); åbn/konverter i Adobe InDesign.
Programmer der åbner PM-filer
Tekniske detaljer
dyb specifikation| MIME-type | text/x-perl (også accepteret: application/x-perl, text/plain) |
| Kodning | UTF-8 eller ASCII; ikke-ASCII kildekode kræver en eksplicit `use utf8;`-erklæring |
| Filstruktur | `package`-erklæring → importer (`use`/`require`) → subrutiner og variabler → valgfri `Exporter`-opsætning → indlejrede POD-dokumenter → afsluttende sand værdi (`1;`) |
| Magic bytes / signatur | Ingen; ingen binær signatur. Identificeres ved `.pm`-filtypen og en `package`-erklæring nær toppen. En valgfri UTF-8 BOM (EF BB BF) kan gå forud for den første linje. |
| Navnerum-til-sti-mapping | Modulnavn mapper direkte til dets filsti: `Foo::Bar` opløses til `Foo/Bar.pm` på Perls `@INC`-søgesti |
| Indlæsningsmekanisme | Indlæsning ved kompilering via `use Module;`; indlæsning ved kørsel via `require 'Module/Name.pm'` eller `require Module::Name` |
| Sand-værdi-terminator | Skal ende med en sand værdi - konventionelt bare `1;` - så kalderen kan bekræfte, at filen blev indlæst uden fejl |
| Versionsmålretning | Minimum Perl-version erklæret med `use v5.xx;` eller `use 5.010;`; ingen filformat-version i sig selv |
| Typisk filstørrelse | 1 KB - 200 KB pr. modul |
| Eksportmekanisme | Subrutiner og variabler eksponeres selektivt for kaldere via `Exporter`-modulet ved hjælp af `@EXPORT`- og `@EXPORT_OK`-arrays |
| Dokumentationsindlejring | Inline Plain Old Documentation (POD)-blokke, afgrænset af `=pod` / `=cut`; parses af `perldoc` og POD-renderere |
| Byte-code-cache | Perl kan gemme en prækompileret form ved siden af kildekoden som en `.pmc`-fil; selve `.pm`-filen bliver aldrig kompileret til en selvstændig binær fil |
| Obfuskering / kryptering | Almindelig tekst som standard; valgfri kildekodefiltrering via moduler som `Filter::Crypto` eller `Filter::Util::Call` |
| Tilknyttede platforme | Linux, macOS, Windows (Strawberry Perl / ActivePerl) og ethvert andet operativsystem, hvor Perl er installeret |
| Udgivet | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Seneste version | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Åben standard | Ja · royaltyfri |
| Specifikation | perldoc.perl.org |
PM-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om PM-filer.