Co to jest format pliku PM?
Plik .pm to moduł Perl - tekstowy plik źródłowy, który pakuje kod Perl wielokrotnego użytku w nazwaną przestrzeń nazw. System modułów został wprowadzony wraz z Perl 5 w 1994 roku i pozostaje fundamentem ekosystemu CPAN, który hostuje setki tysięcy modułów .pm.
Każdy plik .pm deklaruje swoją przestrzeń nazw blisko początku za pomocą instrukcji package (np. package HTTP::Tiny;) i konwencjonalnie kończy się samą cyfrą 1;, aby use lub require mogły zweryfikować pomyślne załadowanie. Nie istnieje binarna liczba magiczna; plik jest identyfikowany przez rozszerzenie .pm oraz obecność deklaracji package.
Nazwa modułu i ścieżka pliku są bezpośrednio powiązane: Foo::Bar mapuje się na Foo/Bar.pm gdzieś w ścieżce wyszukiwania @INC interpretera Perl. Moduł jest ładowany przez skrypt .pl lub inny moduł za pomocą use Module::Name; lub require "Module/Name.pm".
Typowa zawartość obejmuje:
- Eksportowane podprogramy i zmienne (zazwyczaj zarządzane przez
Exporter) - Definicje klas zorientowanych obiektowo
- Osadzone bloki dokumentacji
.pod - Deklarację wersji poprzez
our $VERSION = '1.00';
Moduły są interpretowane w czasie wykonywania; pliki .pmc to opcjonalna pamięć podręczna kodu bajtowego. Typ MIME to text/x-perl, a kodowanie to zazwyczaj UTF-8 lub ASCII, deklarowane w razie potrzeby za pomocą use utf8;.
Bezpieczeństwo
RYZYKO: MEDIUMPlik .pm jest zwykłym tekstem i jest bezpieczny do odczytu lub otwarcia w edytorze - nie może działać samoczynnie. Ryzyko tkwi w jego URUCHAMIANIU: moduły Perl to kod wykonywalny, który może czytać/zapisywać pliki, uruchamiać polecenia powłoki i nawiązywać połączenia sieciowe, a kod może zostać wykonany nawet w momencie ładowania (bloki BEGIN, logika importu), gdy tylko skrypt wywoła „use Module;”. Dlatego traktuj niezaufany .pm jak każdy program: przeczytaj go przed załadowaniem i nie uruchamiaj kodu Perl ze źródeł, którym nie ufasz. Plik leżący na dysku jest nieszkodliwy.
Szczegóły formatu
w pigułce- Publikacja Adobe PageMaker (.pm) - Starsze dokumenty DTP programów Aldus/Adobe PageMaker używały rozszerzenia .pm (później .pm5/.pm6/.p65/.pmd); otwórz/konwertuj w Adobe InDesign.
Programy otwierające pliki PM
Szczegóły techniczne
specyfikacja| Typ MIME | text/x-perl (akceptowane również: application/x-perl, text/plain) |
| Kodowanie | UTF-8 lub ASCII; źródło inne niż ASCII wymaga jawnej deklaracji `use utf8;` |
| Struktura pliku | deklaracja `package` → importy (`use`/`require`) → podprogramy i zmienne → opcjonalna konfiguracja `Exporter` → osadzona dokumentacja POD → końcowa wartość logiczna prawdy (`1;`) |
| Magiczne bajty / sygnatura | Brak; brak sygnatury binarnej. Identyfikowany przez rozszerzenie `.pm` i instrukcję `package` blisko początku. Opcjonalny znacznik UTF-8 BOM (EF BB BF) może poprzedzać pierwszą linię. |
| Mapowanie przestrzeni nazw na ścieżkę | Nazwa modułu mapuje się bezpośrednio na ścieżkę pliku: `Foo::Bar` rozwiązuje się do `Foo/Bar.pm` w ścieżce wyszukiwania `@INC` interpretera Perl |
| Mechanizm ładowania | Ładowanie w czasie kompilacji przez `use Module;`; ładowanie w czasie wykonywania przez `require 'Module/Name.pm'` lub `require Module::Name` |
| Terminator wartości prawdy | Musi kończyć się wartością logiczną prawdy - konwencjonalnie samym `1;` - aby wywołujący mógł potwierdzić, że plik załadował się bez błędów |
| Wersjonowanie | Minimalna wersja Perl deklarowana za pomocą `use v5.xx;` lub `use 5.010;`; brak własnej wersji formatu pliku |
| Typowy rozmiar pliku | 1 KB - 200 KB na moduł |
| Mechanizm eksportu | Podprogramy i zmienne są selektywnie udostępniane wywołującym za pośrednictwem modułu `Exporter` przy użyciu tablic `@EXPORT` i `@EXPORT_OK` |
| Osadzanie dokumentacji | Wewnętrzne bloki Plain Old Documentation (POD), ograniczone przez `=pod` / `=cut`; analizowane przez `perldoc` i renderery POD |
| Pamięć podręczna kodu bajtowego | Perl może przechowywać skompilowaną formę obok źródła jako plik `.pmc`; sam `.pm` nigdy nie jest kompilowany do samodzielnego pliku binarnego |
| Zaciemnianie / szyfrowanie | Domyślnie zwykły tekst; opcjonalne filtrowanie źródła za pomocą modułów takich jak `Filter::Crypto` lub `Filter::Util::Call` |
| Powiązane platformy | Linux, macOS, Windows (Strawberry Perl / ActivePerl) i każdy inny system operacyjny, w którym zainstalowany jest Perl |
| Wydano | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| Najnowsza wersja | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | perldoc.perl.org |
Konwersje PM
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PM.