PM ファイル形式とは?
.pm ファイルは Perlモジュール です。これは、再利用可能なPerlコードを名前付きの名前空間にパッケージ化したプレーンテキストのソースファイルです。このモジュールシステムは1994年にPerl 5で導入され、数十万の .pm モジュールをホストするCPANエコシステムの基盤となっています。
すべての .pm ファイルは、ファイルの先頭付近で package 文(例: package HTTP::Tiny;)を使用して名前空間を宣言し、慣習的に末尾を 1; で終えることで、 use や require がロードの成功を確認できるようにします。バイナリのマジックナンバーは存在せず、ファイルは .pm 拡張子と package 宣言の存在によって識別されます。
モジュール名とファイルパスは直接リンクしています。 Foo::Bar は、Perlの @INC 検索パス上のどこかにある Foo/Bar.pm にマッピングされます。モジュールは、.pl スクリプトや他のモジュールから use Module::Name; または require "Module/Name.pm" によってロードされます。
一般的な内容には以下が含まれます:
- エクスポートされたサブルーチンと変数(通常は
Exporterで管理) - オブジェクト指向のクラス定義
- 埋め込まれた
.podドキュメントブロック our $VERSION = '1.00';によるバージョン宣言
モジュールは実行時に解釈されます。.pmc ファイルはオプションのバイトコードキャッシュです。MIMEタイプは text/x-perl で、エンコーディングは通常UTF-8またはASCIIであり、必要に応じて use utf8; で宣言されます。
セキュリティと安全性
リスク: MEDIUM.pmファイルはプレーンテキストであり、エディタで読み取ったり開いたりしても安全です。それ自体が動作することはありません。リスクは「実行」にあります。Perlモジュールは実行可能なコードであり、ファイルの読み書き、シェルコマンドの実行、ネットワーク通信を行うことができます。また、スクリプトが «use Module;» を行った瞬間にロード時(BEGINブロックやインポートロジック)にコードが実行されることもあります。そのため、信頼できない .pm ファイルはプログラムと同様に扱い、ロードする前に内容を確認し、信頼できないソースからのPerlコードは実行しないでください。ディスク上にあるだけのファイルは無害です。
形式の詳細
概要- Adobe PageMaker publication (.pm) - 古い Aldus/Adobe PageMaker のデスクトップパブリッシング文書で .pm 拡張子が使用されていました(後に .pm5/.pm6/.p65/.pmd)。Adobe InDesign で開くか変換してください。
PM ファイルを開くプログラム
技術的詳細
詳細仕様| MIMEタイプ | text/x-perl (application/x-perl, text/plain も許容) |
| エンコーディング | UTF-8 または ASCII。非ASCIIソースには明示的な `use utf8;` 宣言が必要 |
| ファイル構造 | `package` 宣言 → インポート (`use`/`require`) → サブルーチンと変数 → オプションの `Exporter` 設定 → 埋め込みPODドキュメント → 末尾の真値 (`1;`) |
| マジックバイト / シグネチャ | なし。バイナリシグネチャはありません。 `.pm` 拡張子と先頭付近の `package` 文によって識別されます。1行目の前にオプションのUTF-8 BOM (EF BB BF) が付く場合があります。 |
| 名前空間とパスのマッピング | モジュール名はファイルパスに直接対応します。 `Foo::Bar` はPerlの `@INC` 検索パス上の `Foo/Bar.pm` として解決されます。 |
| ロードの仕組み | `use Module;` によるコンパイル時のロード、または `require 'Module/Name.pm'` もしくは `require Module::Name` による実行時のロード |
| 真値による終端 | 呼び出し側がファイルのロード成功を確認できるよう、末尾は真値(慣習的には単なる `1;`)で終わる必要があります。 |
| ターゲットバージョン | 最小Perlバージョンは `use v5.xx;` または `use 5.010;` で宣言されます。ファイルフォーマット自体のバージョンはありません。 |
| 一般的なファイルサイズ | 1モジュールあたり 1 KB - 200 KB |
| エクスポート機能 | サブルーチンや変数は、 `@EXPORT` および `@EXPORT_OK` 配列を使用して、 `Exporter` モジュール経由で呼び出し側に選択的に公開されます。 |
| ドキュメントの埋め込み | `=pod` / `=cut` で区切られたインラインの Plain Old Documentation (POD) ブロック。 `perldoc` やPODレンダラーによって解析されます。 |
| バイトコードキャッシュ | Perlはソースの横にプリコンパイルされた形式を `.pmc` ファイルとして保存する場合があります。 `.pm` 自体がスタンドアロンのバイナリにコンパイルされることはありません。 |
| 難読化 / 暗号化 | デフォルトはプレーンテキストです。 `Filter::Crypto` や `Filter::Util::Call` などのモジュールを使用したオプションのソースフィルタリングが可能です。 |
| 関連プラットフォーム | Linux, macOS, Windows (Strawberry Perl / ActivePerl)、およびPerlがインストールされているその他のOS |
| リリース日 | 1987 (Perl 1.0); the .pm module convention dates to Perl 5 (1994) |
| 最新バージョン | Perl 5.40 (2024); Perl modules remain the standard library packaging unit |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | perldoc.perl.org |
PM の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。PM ファイルについて最初の質問をしてみましょう。