Hva er PM-filformatet?
En .pm-fil er en Perl-modul - en kildekodefil i ren tekst som pakker gjenbrukbar Perl-kode inn i et navngitt navnerom. Modulsystemet ble introdusert med Perl 5 i 1994 og er fortsatt fundamentet i CPAN-økosystemet, som er vert for hundretusenvis av .pm-moduler.
Hver .pm-fil deklarerer sitt navnerom nær toppen med en package-setning (f.eks. package HTTP::Tiny;) og slutter konvensjonelt med en naken 1; slik at use eller require kan verifisere en vellykket lasting. Det finnes ikke noe binært magisk tall; filen identifiseres av filendelsen .pm og tilstedeværelsen av en package-deklarasjon.
Modulnavn og filbane er direkte koblet: Foo::Bar mappes til Foo/Bar.pm et sted i Perls @INC-søkebane. En modul lastes av et .pl-skript eller en annen modul med use Module::Name; eller require "Module/Name.pm".
Typisk innhold inkluderer:
- Eksporterte subrutiner og variabler (vanligvis administrert med
Exporter) - Objektorienterte klassedefinisjoner
- Innebygde
.pod-dokumentasjonsblokker - En versjonsdeklarasjon via
our $VERSION = '1.00';
Moduler tolkes ved kjøretid; .pmc-filer er en valgfri hurtigbuffer for bytekode. MIME-typen er text/x-perl og kodingen er vanligvis UTF-8 eller ASCII, deklarert med use utf8; ved behov.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .pm-fil er ren tekst og trygg å lese eller åpne i et redigeringsprogram - den kan ikke utføre noe på egen hånd. Risikoen ligger i å KJØRE den: Perl-moduler er kjørbar kode som kan lese/skrive filer, kjøre skallkommandoer og gjøre nettverkskall, og kode kan til og med kjøre ved lasting (BEGIN-blokker, import-logikk) i det øyeblikket et skript utfører «use Module;». Behandle derfor en upålitelig .pm-fil som ethvert annet program: les den før du laster den, og ikke kjør Perl-kode fra kilder du ikke stoler på. Filen i seg selv er ufarlig når den bare ligger på disken.
Formatdetaljer
i et nøtteskall- Adobe PageMaker-publikasjon (.pm) - Eldre Aldus/Adobe PageMaker-dokumenter brukte filendelsen .pm (senere .pm5/.pm6/.p65/.pmd); åpne/konverter i Adobe InDesign.
Programmer som åpner PM-filer
Tekniske detaljer
dyp spesifikasjon| MIME-type | text/x-perl (også akseptert: application/x-perl, text/plain) |
| Koding | UTF-8 eller ASCII; ikke-ASCII kilde krever en eksplisitt `use utf8;`-deklarasjon |
| Filstruktur | `package`-deklarasjon → importer (`use`/`require`) → subrutiner og variabler → valgfritt `Exporter`-oppsett → innebygd POD-dokumentasjon → avsluttende sann verdi (`1;`) |
| Magiske byte / signatur | Ingen; ingen binær signatur. Identifiseres av filendelsen `.pm` og en `package`-setning nær toppen. En valgfri UTF-8 BOM (EF BB BF) kan forekomme før første linje. |
| Mapping fra navnerom til bane | Modulnavn mappes direkte til filbanen: `Foo::Bar` løses til `Foo/Bar.pm` i Perls `@INC`-søkebane |
| Lastemekanisme | Lasting ved kompilering via `use Module;`; lasting ved kjøretid via `require 'Module/Name.pm'` eller `require Module::Name` |
| Sann-verdi-terminator | Må slutte med en sann verdi - konvensjonelt en naken `1;` - slik at oppkaller kan bekrefte at filen ble lastet uten feil |
| Versjonsmålretting | Minimum Perl-versjon deklarert med `use v5.xx;` eller `use 5.010;`; ingen egen versjon for filformatet |
| Typisk filstørrelse | 1 KB - 200 KB per modul |
| Eksportmekanisme | Subrutiner og variabler eksponeres selektivt til oppkallere via `Exporter`-modulen ved bruk av `@EXPORT`- og `@EXPORT_OK`-tabeller |
| Dokumentasjonsinnbygging | Inline Plain Old Documentation (POD)-blokker, avgrenset av `=pod` / `=cut`; tolkes av `perldoc` og POD-rendere |
| Bytekode-buffer | Perl kan lagre en ferdigkompilert form ved siden av kildekoden som en `.pmc`-fil; selve `.pm`-filen blir aldri kompilert til en frittstående binærfil |
| Obfuskering / kryptering | Ren tekst som standard; valgfri kildekodefiltrering via moduler som `Filter::Crypto` eller `Filter::Util::Call` |
| Tilknyttede plattformer | Linux, macOS, Windows (Strawberry Perl / ActivePerl), og alle andre operativsystemer der Perl er installert |
| Utgitt | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Siste versjon | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | perldoc.perl.org |
PM-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om PM-filer.