Perl モジュール ExtUtils::MakeMaker::Tutorial ドキュメント [翻訳] (d094)

セラ (perlackline)

2017年03月14日 20:15



目次 - Perl Index


Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その d094 回。

Perl で、「 Makfile 」を生成するためのモジュール「 ExtUtils::MakeMaker 」でモジュールの書き方を解説しているらしい「 ExtUtils::MakeMaker::Tutorial 」を確認する。


今回は、ドキュメント「 ExtUtils::MakeMaker::Tutorial 」を ExtUtils::MakeMaker::Tutorial を自家用に翻訳しつつ、その機能を確認します。正確な情報はリンク先の原文を確認してください。

NAME ( 名前 )
SYNOPSIS ( 概要 )
DESCRIPTION ( 説明 )
   The Mantra ( マントラ )
   The Layout ( レイアウト )
SEE ALSO ( 関連項目 )



NAME ( 名前 )



ExtUtils::MakeMaker::Tutorial - Writing a module with MakeMaker


ExtUtils::MakeMaker::Tutorial - モジュールを書く MakeMaker で


SYNOPSIS ( 概要 )




use ExtUtils::MakeMaker;

WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
);




DESCRIPTION ( 説明 )



This is a short tutorial on writing a simple module with MakeMaker. It's really not that hard.


これは短いチュートリアルです 書くための シンプルなモジュールを MakeMaker で. それは本当に難しいことではありません.


The Mantra ( マントラ )

MakeMaker modules are installed using this simple mantra


MakeMaker モジュールはインストールされます このシンプルなマントラを使って


perl Makefile.PL
make
make test
make install



There are lots more commands and options, but the above will do it.


とても多くのコマンドとオプションがあります, しかし上記はそれを行います.


The Layout ( レイアウト )

The basic files in a module look something like this.


基本ファイルは モジュールの このような感じに見えます.


Makefile.PL
MANIFEST
lib/Your/Module.pm



That's all that's strictly necessary. There's additional files you might want:


以上が 不可欠です. 追加のファイルがあります あなたが望むかもしれない:


lib/Your/Other/Module.pm
t/some_test.t
t/some_other_test.t
Changes
README
INSTALL
MANIFEST.SKIP
bin/some_program



Makefile.PL

When you run Makefile.PL, it makes a Makefile. That's the whole point of MakeMaker. The Makefile.PL is a simple program which loads ExtUtils::MakeMaker and runs the WriteMakefile() function to generate a Makefile.


あなたが Makefile.PL を実行したときに, Makefile が作成されます. それが MakeMaker の核心です. Makefile.PL はシンプルなプログラムで ExtUtils::MakeMaker を読み込んで実行します WriteMakefile() 関数を Makefile の作成のために.

Here's an example of what you need for a simple module:


こちらが例です あなたが必要とするものの シンプルなモジュールのために:


use ExtUtils::MakeMaker:

WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
);



NAME is the top-level namespace of your module. VERSION_FROM is the file which contains the $VERSION variable for the entire distribution. Typically this is the same as your top-level module.


NAME は トップレベルの名前空間です あなたのモジュールの. VERSION_FROM は ファイルです 含む $VERSION 変数を ディストリビューション全体のための. 典型的には これは あなたのトップレベルのモジュールと同じです.


MANIFEST

A simple listing of all the files in your distribution.


すべてのファイルのシンプルなリストです あなたのディストリビューションの.


Makefile.PL
MANIFEST
lib/Your/Module.pm



File paths in a MANIFEST always use Unix conventions (ie. /) even if you're not on Unix.


ファイルパスは MANIFEST の 常に使います Unix の慣習を ( ie. / ) たとえあなたが Unix でないとしても.

You can write this by hand or generate it with 'make manifest'.


あなたは書けます これを 手で または 生成できます 'make manifest' で.

See ExtUtils::Manifest for more details.


参照します ExtUtils::Manifest を より詳細のために.

lib/

This is the directory where the .pm and .pod files you wish to have installed go. They are laid out according to namespace. So Foo::Bar is lib/Foo/Bar.pm.


これはディレクトリです .pm と .pod ファイルの あなたがしたい インストールを. それらはレイアウトされます 名前空間によって. なので Foo::Bar は lib/Foo/Bar.pm です.

t/

Tests for your modules go here. Each test filename ends with a .t. So t/foo.t 'make test' will run these tests.


あなたのモジュールのためのテストはここに行きます. 各テストファイル名の末尾は .t です. なので t/foo.t で 'make test' は実行します これらのテストを.

Typically, the t/ test directory is flat, with all test files located directly within it. However, you can nest tests within subdirectories, for example:


典型的には, t/ テストディレクトリはフラットで, すべてのテストファイルは配置されます 直接その中に. しかしながら, あなたはネストできます テストを サブディレクトリの中に, 例えば:


t/foo/subdir_test.t



To do this, you need to inform WriteMakeFile() in your Makefile.PL file in the following fashion:


これを行うには, あなたは通知する必要があります WriteMakeFile() に あなたの Makefile.PL ファイルで 次の流儀で:


test => {TESTS => 't/*.t t/*/*.t}



That will run all tests in t/, as well as all tests in all subdirectories that reside under t/. You can nest as deeply as makes sense for your project. Simply add another entry in the test location string. For example, to test:


それは実行します すべてのテストを t/ の, 同様に すべてのテストを すべてのサブディレクトリの t/ 配下に属する. あなたはネストできます 意味のある深さに あなたのプロジェクトのために. シンプルに追加します別のエントリを テストの場所の文字列で. 例えば, テストのために:


t/foo/bar/subdir_test.t



You would use the following test directive:


あなたは使うでしょう 次の test ディレクティブを:


test => {TESTS => 't/*.t t/*/*/*.t}



Note that in the above example, tests in the first subdirectory will not be run. To run all tests in the intermediary subdirectory preceeding the one the test files are in, you need to explicitly note it:


注意してください 上記の例では, テストは 最初のサブディレクトリの 実行しません. 実行するには すべてのテストを 中間のサブディレクトリの それの前の テストファイルが入っている, あなたは必要です 明示的にそれを書くことを:


test => {TESTS => 't/*.t t/*/*.t t/*/*/*.t}



You don't need to specify wildcards if you only want to test within specific subdirectories. The following example will only run tests in t/foo:


あなたは必要ではありません ワイルドカードの指定は もしあなたがテストのみをのぞむなら 特定のサブディレクトリでの. 次の例は t/foo でのみテストを実行します:


test => {TESTS => 't/foo/*.t'}



Tests are run from the top level of your distribution. So inside a test you would refer to ./lib to enter the lib directory, for example.


テストは実行します トップレベルから あなたのディストリビューションの. なのでテストの中であなたは参照することで ./lib を lib ディレクトリに入ることができます, 例えば.


Changes

A log of changes you've made to this module. The layout is free-form. Here's an example:


変更のログです あなたがモジュールにした. レイアウトはフリー形式です. こちらは例です:


1.01 Fri Apr 11 00:21:25 PDT 2003
- thing() does some stuff now
- fixed the wiggy bug in withit()

1.00 Mon Apr 7 00:57:15 PDT 2003
- "Rain of Frogs" now supported




README

A short description of your module, what it does, why someone would use it and its limitations. CPAN automatically pulls your README file out of the archive and makes it available to CPAN users, it is the first thing they will read to decide if your module is right for them.


短い説明です あなたのモジュールの, 何を行うか, なぜ誰かがそれを使うのか それと その制限. CPAN は自動的に取り出します あなたの README ファイルを アーカイブから それと 利用可能にします CPAN ユーザたちのために, それは最初のものです 彼らが読む 決めるために あなたのモジュールが正しいかどうかを 彼らにとって.


INSTALL

Instructions on how to install your module along with any dependencies. Suggested information to include here:


指示をします どのようにインストールするかを あなたのモジュールを すべての依存関係と一緒に. 推奨されている情報です ここに含める:


any extra modules required for use
the minimum version of Perl required
if only works on certaion operating systems

すべての追加モジュール 要求される 利用のために
Perl の最小バージョン 要求される
もし特定の OS でのみ動作するなら




MANIFEST.SKIP

A file full of regular expressions to exclude when using 'make manifest' to generate the MANIFEST. These regular expressions are checked against each file path found in the distribution (so you're matching against "t/foo.t" not "foo.t").


ファイルです 正規表現で満たされた 除外するために 'make manifest' を使うときに 生成するために MANIFEST を. これらの正規表現は チェックをします 各ファイルパスに対して ディストリビューションで見つかった ( なので あなたは マッチングします "t/foo.t" に対して "foo.t" ではなく ).

Here's a sample:


こちらがサンプルです:


~$ # ignore emacs and vim backup files
# 無視します emacs と vim のバックアップファイルを
.bak$ # ignore manual backups
# 無視します 手動のバックアップを
\# # ignore CVS old version files and emacs tempfiles
# 無視しますCSV の古いバージョンのファイルと emacs の一時ファイルを



Since # can be used for comments, # must be escaped.


# はコメントに使われるため, # はエスケープする必要があります.

MakeMaker comes with a default MANIFEST.SKIP to avoid things like version control directories and backup files. Specifying your own will override this default.


MakeMaker にはデフォルトの MANIFEST.SKIP が付属し 回避します バージョンコントロールディレクトリやバックアップファイルのようなものを. 指定すると あなたの独自で オーバーライドします このデフォルトを.

bin/


SEE ALSO ( 関連項目 )



perlmodstyle gives stylistic help writing a module.


perlmodstyle は与えます 様式的なヘルプを モジュールを書くときの.

perlnewmod gives more information about how to write a module.


perlnewmod は与えます より多くの情報を どのようにモジュールを書くかについて.

There are modules to help you through the process of writing a module: ExtUtils::ModuleMaker, Module::Install, PAR


助けるモジュールがあります あなたが通るプロセスを モジュールを書くときに: ExtUtils::ModuleMaker, Module::Install, PAR


NEXT



次回は、MakeMaker の代替と謳われるモジュール「 Module::Build 」のドキュメントを確認します。


参考情報は書籍「 続・初めての Perl 改訂版 」, 「 Effective Perl 第 2 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index































関連記事