perlsource - A guide to the Perl source tree

perlsource - Perl のソースツリーのガイド


This document describes the layout of the Perl source tree. If you're hacking on the Perl core, this will help you find what you're looking for.

この文書は、Perl ソースツリーのレイアウトを記述しています。 Perl コアをハックする場合は、これがあなたの探しているものを見つける 助けになるでしょう。


The Perl source tree is big. Here's some of the thing you'll find in it:

Perl ソースツリーは巨大です。 以下はその中で見つけられるものの一部です:

C コード

The C source code and header files mostly live in the root of the source tree. There are a few platform-specific directories which contain C code. In addition, some of the modules shipped with Perl include C or XS code.

C のソースコードとヘッダファイルはほとんどソースツリーのルートにあります。 一部のプラットフォーム固有ディレクトリには C のコードがあります。 さらに、Perl に同梱されている一部のモジュールは C や XS のコードを含みます。

See perlinterp for more details on the files that make up the Perl interpreter, as well as details on how it works.

Perl インタプリタを作り上げているファイル、およびそれが どのように動作するかに関するさらなる詳細については perlinterp を参照してください。


Modules shipped as part of the Perl core live in four subdirectories. Two of these directories contain modules that live in the core, and two contain modules that can also be released separately on CPAN. Modules which can be released on cpan are known as "dual-life" modules.

Perl コアの一部として同梱されているモジュールは、四つのサブディレクトリに あります。 それらのディレクトリの二つにはコアで管理されているモジュールがあり、 二つには CPAN でも独自にリリースされているモジュールがあります。 cpan でリリースされているモジュールは「二重管理」(dual-life)モジュールとして 知られています。

  • lib/

    This directory contains pure-Perl modules which are only released as part of the core. This directory contains all of the modules and their tests, unlike other core modules.

    このディレクトリには、コアの一部としてのみリリースされている、ピュア Perl モジュールがあります。 このディレクトリには、その他のコアモジュールと異なり、 全ての モジュールとそのテストがあります。

  • ext/

    Like lib/, this directory contains modules which are only released as part of the core. Unlike lib/, however, a module under ext/ generally has a CPAN-style directory- and file-layout and its own Makefile.PL. There is no expectation that a module under ext/ will work with earlier versions of Perl 5. Hence, such a module may take full advantage of syntactical and other improvements in Perl 5 blead.

    lib/ と同様、このディレクトリには、コアの一部としてのみリリースされている モジュールがあります。 しかし、lib/ と異なり、ext/ 以下のモジュールは一般的に CPAN 風のディレクトリおよびファイル配置をしていて、 独自の Makefile.PL を持っています。 ext/ 以下のモジュールは、以前のバージョンの Perl 5 で動作することを 想定していません。 従って、このようなモジュールは Perl 5 blead の文法的およびその他の改良の 利点を最大限受けられます。

  • dist/

    This directory is for dual-life modules where the blead source is canonical. Note that some modules in this directory may not yet have been released separately on CPAN. Modules under dist/ should make an effort to work with earlier versions of Perl 5.

    このディレクトリは、blead のソースが主である二重管理モジュールです。 このディレクトリのモジュールには、まだ CPAN に独自にリリースされていない ものもあることに注意してください。 dist/ 以下のモジュールは、以前のバージョンの Perl 5 でも動作するための 努力が行われるべきです。

  • cpan/

    This directory contains dual-life modules where the CPAN module is canonical. Do not patch these modules directly! Changes to these modules should be submitted to the maintainer of the CPAN module. Once those changes are applied and released, the new version of the module will be incorporated into the core.

    このディレクトリには、CPAN モジュールが主である二重管理モジュールが あります。 これらのモジュールに直接パッチをしないでください! これらのモジュールへの変更は、CPAN モジュールの管理者に投稿されるべきです。 その変更が適用されてリリースされてから、モジュールの新しいバージョンが コアに統合されます。

For some dual-life modules, it has not yet been determined if the CPAN version or the blead source is canonical. Until that is done, those modules should be in cpan/.

一部の二重管理モジュールでは、CPAN 版と blead のソースのどちらが主か まだ決定されていません。 決定が成されるまで、このようなモジュールは cpan/ に置かれます。


The Perl core has an extensive test suite. If you add new tests (or new modules with tests), you may need to update the t/TEST file so that the tests are run.

Perl コアには大規模なテストスイートがあります。 新しいテスト(またはテスト付きの新しいモジュール)を追加する場合、 テストが実行されるように、t/TEST ファイルを更新する必要があるでしょう。

  • Module tests


    Tests for core modules in the lib/ directory are right next to the module itself. For example, we have lib/strict.pm and lib/strict.t.

    lib/ ディレクトリにあるコアモジュールのテストは、 モジュール自身のすぐ隣にあります。 例えば、lib/strict.pm and lib/strict.t があります。

    Tests for modules in ext/ and the dual-life modules are in t/ subdirectories for each module, like a standard CPAN distribution.

    ext/ と二重管理のモジュールのテストは、標準の CPAN 配布と同様、 各モジュールの t/ サブディレクトリにあります。

  • t/base/

    Tests for the absolute basic functionality of Perl. This includes if, basic file reads and writes, simple regexes, etc. These are run first in the test suite and if any of them fail, something is really broken.

    Perl の絶対的な基本機能をテストします。 これには if、基本的なファイルの読み書き、単純な正規表現などを含みます。 これらはテストスイートで最初に実行され、それらのいずれかが失敗した場合、 何かが 本当に 壊れていることになります。

  • t/cmd/

    Tests for basic control structures, if/else, while, subroutines, etc.

    これらは、基本制御構造、if/elsewhile、サブルーチンなどを テストします。

  • t/comp/

    Tests for basic issues of how Perl parses and compiles itself.

    Perl の構文解析およびコンパイル方法に関する基本的な問題をテストします。

  • t/io/

    Tests for built-in IO functions, including command line arguments.

    コマンドライン引数を含む組み込み IO 関数をテストします。

  • t/mro/

    Tests for perl's method resolution order implementations (see mro).

    perl のメソッド解決順序実装(mro を参照)をテストします。

  • t/op/

    Tests for perl's built in functions that don't fit into any of the other directories.

    perl に組み込まれている関数のうち、他のどのディレクトリにも適合しない 関数をテストします。

  • t/opbasic/

    Tests for perl's built in functions which, like those in t/op/, do not fit into any of the other directories, but which, in addition, cannot use t/test.pl,as that program depends on functionality which the test file itself is testing.

    Tests for perl's built in functions which, like those in t/op/ にあるものと同様、perl の組み込み関数で、他のディレクトリに 合わないものですが、さらに、t/test.pl を使えないテスト; このプログラムはテストファイル自身がテストしている機能に 依存しているからです。

  • t/re/

    Tests for regex related functions or behaviour. (These used to live in t/op).

    正規表現関係の関数や振る舞いに関するテストをします。 (これらは以前は t/op にありました)。

  • t/run/

    Tests for features of how perl actually runs, including exit codes and handling of PERL* environment variables.

    終了コードや PERL* 環境変数の処理など、perl が 実際にどのように実行されるかをテストします。

  • t/uni/

    Tests for the core support of Unicode.

    Unicode のコア対応をテストします。

  • t/win32/

    Windows-specific tests.

    Windows 固有のテスト。

  • t/porting/

    Tests the state of the source tree for various common errors. For example, it tests that everyone who is listed in the git log has a corresponding entry in the AUTHORS file.

    ソースツリーの状態に関して、様々な一般的な誤りをテストします。 例えば、git ログに乗っている全員が AUTHORS ファイルの対応するエントリを 持っているかをテストします。

  • t/lib/

    The old home for the module tests, you shouldn't put anything new in here. There are still some bits and pieces hanging around in here that need to be moved. Perhaps you could move them? Thanks!

    モジュールテストの古いホームです; ここに新しいものを置くべきではありません。 ここにはまだ動かす必要のあるいくつかの断片が残っています。 それらを動かすことはできますか? ありがとう!


All of the core documentation intended for end users lives in pod/. Individual modules in lib/, ext/, dist/, and cpan/ usually have their own documentation, either in the Module.pm file or an accompanying Module.pod file.

エンドユーザー向けの全てのコア文書は pod/ にあります。 lib/, ext/, dist/, cpan/ にある個々のモジュールは 通常独自の文書を持っていて、それは Module.pm ファイルの中か 付随する Module.pod ファイルにあります。

Finally, documentation intended for core Perl developers lives in the Porting/ directory.

最後に、コア Perl 開発者向けの文書は Porting/ ディレクトリにあります。


The Porting directory contains a grab bag of code and documentation intended to help porters work on Perl. Some of the highlights include:

Porting ディレクトリには、porters の Perl での作業を助けるための コードと文書の寄せ集めになっています。 重要なものとしては:

  • check*

    These are scripts which will check the source things like ANSI C violations, POD encoding issues, etc.

    これらは、ANSI C 違反、POD のエンコーディング問題などのソースのことを チェックするスクリプトです。

  • Maintainers, Maintainers.pl, and Maintainers.pm

    These files contain information on who maintains which modules. Run perl Porting/Maintainers -M Module::Name to find out more information about a dual-life module.

    これらのファイルはモジュールを管理している人に関する情報です。 二重管理モジュールに関するさらなる情報を探すには、 perl Porting/Maintainers -M Module::Name を実行します。

  • podtidy

    Tidies a pod file. It's a good idea to run this on a pod file you've patched.

    pod ファイルを整理します。 パッチを当てた pod ファイルに対してこれを実行するのは良い考えです。


The Perl build system on *nix-like systems starts with the Configure script in the root directory.

*nix 風のシステムでのPerl ビルドシステムは、ルートディレクトリの Configure スクリプトから始まります。

Platform-specific pieces of the build system also live in platform-specific directories like win32/, vms/, etc. Windows and VMS have their own Configure-like scripts, in their respective directories.

ビルドシステムのプラットフォーム固有の部分は、 win32/, vms/ のようなプラットフォーム固有ディレクトリにもあります。 Windows と VMS は独自の Configure 風スクリプトを持っていて、それぞれの ディレクトリにあります。

The Configure script (or a platform-specific similar script) is ultimately responsible for generating a Makefile from Makefile.SH.

Configure スクリプト(またはプラットフォーム独自の同様のスクリプト)は、 Makefile.SH から Makefile を生成するための最終的な責任を持ちます。

The build system that Perl uses is called metaconfig. This system is maintained separately from the Perl core, and knows about the platform-specific Configure-like scripts, as well as Configure itself.

Perl が使っているビルドシステムは metaconfig と呼ばれます。 このシステムは Perl コアとは別に保守されていて、 プラットフォーム固有の Configure 風スクリプトと Configure 自身について 知っています。

The metaconfig system has its own git repository. Please see its README file in https://github.com/Perl/metaconfig for more details.

metaconfig システムは独自の git リポジトリを持っています。 さらなる詳細については https://github.com/Perl/metaconfig にある README ファイルを 参照してください。

The Cross directory contains various files related to cross-compiling Perl. See Cross/README for more details.

Cross ディレクトリには、Perl のクロスコンパイルに関連した様々な ファイルがあります。 さらる詳細については Cross/README を参照してください。


This file lists everyone who's contributed to Perl. If you submit a patch, you should add your name to this file as part of the patch.

これは Perl に貢献した全員の一覧です。 あなたがパッチを投稿する場合、パッチの一部としてこのファイルにあなたの名前を 追加するべきです。


The MANIFEST file in the root of the source tree contains a list of every file in the Perl core, as well as a brief description of each file.

ソースツリーのルートにある MANIFEST ファイルは、Perl コアにある全ての ファイルの一覧と、それぞれのファイルの概要です。

You can get an overview of all the files with this command:


  % perl -lne 'print if /^[^\/]+\.[ch]\s+/' MANIFEST