PAR-0.75 > pp


pp - Perl パッケージャ (Perl Packager)


pp [ -BILMSVXdeghilmoprsv ] [ parfile | scriptfile ]...


    % pp hello                  # 'hello'を実行可能形式の'a.out'にパックする
    % pp -o hello      # ''を実行可能形式'hello'にパックする

    % pp -o foo   # ''と''を'foo'にパックする
    % ./foo                     # 'foo'の中の''を実行
    % mv foo bar; ./bar         # 'foo'の中の''を実行
    % mv bar baz; ./baz         # エラー:perlスクリプト"baz"を開けない

    % pp -p file                # PARファイル'file.par'を作成
    % pp -o hello file.par      # 'file.par'を実行可能形式'hello'にパック
    % pp -S -o hello file       # 上の2ステップを結合

    % pp -p -o out.par file     # 'file'から'out.par'を作成
    % pp -B -p -o out.par file  # 同上、だがコアモジュールをバンドルする
                                # (-B は実行ファイル作成を想定している)

    % pp -e 'print q//'         # one-linerを'a.out'にパック
    % pp -p -e 'print q//'      # PARファイル'a.out.par'を作成

    % pp -I /foo hello          # パスの追加 (-Iの後にスペースを入れる)
    % pp -M Foo::Bar hello      # モジュールの追加 (-Mの後にスペースを入れる)
    % pp -M hello     # @INC下のファイルを追加
    % pp -X Foo::Bar hello      # モジュールを排除 (-Xの後ろにスペースを入れる)

    % pp -r hello               # 'hello'を'a.out'にパックし、'a.out'を実行
    % pp -r hello a b c         # 'hello'を'a.out'にパックし、
                                # 引数'a b c'をつけて'a.out'を実行

    % pp hello --log=c          # 'hello'を'a.out'にパックし、ログメッセージを
                                # 'c'に残す

    # 'hello'をアイコン付きでコンソールを使用しない'out.exe'にパック(Win32のみ)
    % pp --gui --icon hello.ico -o out.exe hello


pp creates standalone executables from Perl programs, using the compressed packager provided by PAR, and dependency detection heuristics offered by Module::ScanDeps. Source files are compressed verbatim without compilation.

ppは、Perlのプログラムからスタンドアローンな実行可能ファイルを作成する。 これはPARによって提供される圧縮されたパッケージャーと、 Module::ScanDepsによって提供される依存関係発見方法を利用している。 ソースファイルはコンパイル無しに逐語的に圧縮される。

You may think of pp as "perlcc that works without hassle". :-)


It does not provide the compilation-step acceleration provided by perlcc (although a ByteLoader variant of pp is entirely possible), but makes up for it with better reliability, smaller executable size, and full retrieval of original source code.

perlccが持っているコンパイルステップアクセラレーションは提供していない (ppのByteLoader変種は完全に可能だとしても)。しかし、より信頼性が 高く、小さな実行可能サイズ、そして元のソースファイルを完全に復元する という点でこのことは補われている。

If a single input program is specified, the resulting executable will behave identically as that program. However, when multiple programs are packaged, the produced executable will run the one that has the same basename as $0 (i.e. the filename used to invoke it). If nothing matches, it dies with the error Can't open perl script "$0".

入力プログラムが一つ指定されると、生成される実行ファイルは、そのプログラム として振舞う。しかし、複数のプログラムをパッケージした場合、生成される 実行ファイルは、$0と同じベースネームを持つファイルとして実行される (つまり、それを呼び出すために使用されるファイル名ということ)。もし マッチするものが無いと、Can't open perl script "$0"というエラーになる。

On Microsoft Windows platforms, a.exe is used instead of a.out as the default executable name.

MicrosoftのWindowsプラットフォームでは、a.outの代わりにa.exeが デフォルトの実行ファイル名として使われる。


Options are available in a short form and a long form. For example, the three lines below are all equivalent:

オプションはshort形式とlong形式とが利用できる。例えば、 下の三行は全て等価である:

    % pp -o output.exe
    % pp --output output.exe
    % pp --output=output.exe

Adds the specified module into the package, along with its dependencies. Also accepts filenames relative to the @INC path; i.e. -M Module::ScanDeps means the same thing as -M Module/

指定したモジュールを、依存物と一緒にパッケージに追加する。 また、@INCに関連するファイル名も受け入れる;つまり、-M Module::ScanDeps-M Module/ScanDeps.pmと同じ事を意味する。

If FILE does not have a .pm/.ix/.al extension, it will not be scanned for dependencies, and will be placed under / instead of /lib/ inside the PAR file.

FILEが拡張子.pm/.ix/.alを持たない場合、依存関係は 走査されない。そしてPARファイル内の/lib/の代わりに、/下に置かれる。

-B, --bundle

Bundles core modules in the resulting package. This option is enabled by default, except when -p is specified and -o is unspecified.

生成されるパッケージにコアモジュールをバンドルする。このオプションは デフォルトで発揮される。-pが指定され、-oが指定されていないときは除く。

-d, --dependent

Reduce the executable size by not including a copy of perl interpreter. Executables built this way will need a separate perl5x.dll or to function correctly. This option is only available if perl is built as a shared library.

perlインタプリタのコピーを含めないことで実行ファイルのサイズを削減する。 この方法でつくられた実行ファイルが正しく機能するためには、別途perl5x.dlllibperl.soを必要とする。このオプションはperlが共有ライブラリとして構築 されているときにのみ利用できる。

-e, --eval=STRING

Package a one-liner, much the same as perl -e '...'

perl -e '...'とほぼ同じワンライナーをパッケージ。

-X, --exclude=MODULE

Excludes the given module from the dependency search patch and from the package.


-g, --gui

Build an executable that does not have a console window. This option is ignored on non-MSWin32 platforms or when -p is specified.

コンソールウィンドウを持たない実行ファイルを構築する。このオプションは 非MSWIN32プラットフォーム上、あるいは-pを指定したときには無視される。

-h, --help

Shows basic usage information.


-i, --icon=FILE

Specify an icon file for the executable. This option is ignored on non-MSWin32 platforms or when -p is specified.

実行ファイル用のアイコンを指定。このオプションは非MSWIN32 プラットフォーム上、あるいは-pを指定したときには無視される。

-I, --lib=DIR

Adds the given directory to the perl library file search path.


-l, --link=FILE|LIBRARY

Adds the given shared library (a.k.a. shared object or DLL) into the packed file. Also accepts names under library paths; i.e. -l ncurses means the same thing as -l or -l /usr/local/lib/ in most Unixes.

与えられた共有ライブラリ(つまり共有オブジェクトやDLL)をパックされた ファイルに加える。ライブラリパス下の名前も受け付ける;すなわち、 -l ncursesは、ほとんどのUNIXシステムにおける-l /usr/local/lib/libncurses.soと同じことを意味する。

-L, --log=FILE

Log the output of packaging to a file rather than to stdout.


-m, --multiarch

Build a multi-architecture PAR file. Implies -p.


-o, --output=FILE

Specifies the file name for the final packaged executable.


-p, --par

Create PAR archives only; do not package to a standalone binary.


-r, --run

Run the resulting packaged script after packaging it.


-S, --save

Do not delete generated PAR file after packaging.


-s, --sign

Cryptographically sign the generated PAR or binary file using Module::Signature.

Module::Signatureを使って、生成されたPARファイルやバイナリファイルに 暗号形式のサインをつける。

-v, --verbose[=NUMBER]

Increase verbosity of output; NUMBER is an integer from 0 to 5, 5 being the most verbose. Defaults to 1 if specified without an argument.

冗長な出力を増す;NUMBER0から5までの整数で、5が最も饒舌。 引数を指定しない場合は、デフォルトで1になる。

-V, --version

Display the version number and copyrights of this program.




Command-line options (switches). Switches in this variable are taken as if they were on every pp command line.

コマンドラインオプション(スイッチ)。この変数におけるスイッチは 毎回、ppのコマンドラインであるかのように扱われる。


Here are some recipes showing how to utilize pp to bundle with all its dependencies, on target machines with different expected settings:

これは、ppを使ってsource.plをその依存物と一緒にバンドルする 方法を示したレシピである。様々に想定された環境のマシンを対象としている:

Stand-alone setup


    % pp -o packed.exe        # packed.exeを生成
    # これで目標のマシンに'packed.exe'が展開される…
    $ packed.exe                        # 実行
Perl interpreter only, without core modules:


    % pp -B -p                # source.parを作成
    % -B source.par  # packed.plを作成
    # これで目標のマシンに''が展開される…
    $ perl                    # 実行
Perl with core module installed:


    % pp -p                   # source.parを作成
    % -b source.par  # packed.plを作成
    # これで目標のマシンに''が展開される…
    $ perl                    # run it
Perl with and its dependencies installed:


    % pp -p                   # source.parの作成
    % echo "use PAR 'source.par';" >;
    % cat >>;       # packed.plの作成
    # これで目標のマシンに'source.par'と''が展開される…
    $ perl                    # 実行

Note that even if your perl was built with a shared library, the 'Stand-alone setup' above will not need a separate perl5x.dll or to function correctly. Use --dependent if you are willing to ship the shared library with the application, which can significantly reduce the executable size.

注意して欲しいのだが、もしあなたのperlが共有ライブラリと一緒に構築されている場合、 上の'スタンドアローンセットアップ'が正しく動作するために別途perl5x.dlllibperl.soを必要とはしない。そのアプリケーションと一緒に共有ライブラリを 送りたい場合は、--dependentを使うこと。これにより実行ファイルのサイズを 小さくするという重要なことが可能になる。


PAR, Module::ScanDeps,, parl, perlcc


Simon Cozens, Tom Christiansen and Edward Peschko for writing perlcc; this program try to mimic its interface as close as possible, and copied liberally from their code.

perlccはSimon Cozens、Tom ChristiansenそしてEdward Peschko によって書かれた;このプログラムはそのインターフェースを可能な 限りそっくりに真似ており、寛大にもそのコードからコピーをさせて もらっている。

Jan Dubois for writing the utility, which has been partially adapted into the -g flag.

exetype.plユーティリティはJan Duboisによって書かれた。これは 一部-gフラグに適合するようにしてある。

Mattia Barbon for providing the myldr binary loader code.

myldrバイナリローダーのコードはMattia Barbonによって提供された。

Jeff Goff for suggesting the name pp.

ppという名前はJeff Goffが提案してくれた。


Autrijus Tang <> is the official PAR website. You can write to the mailing list at <>, or send an empty mail to <> to participate in the discussion.

Please submit bug reports to <>.


Copyright 2002, 2003 by Autrijus Tang <>.

Neither this program nor the associated parl program impose any licensing restrictions on files generated by their execution, in accordance with the 8th article of the Artistic License:

このプログラム及びparlプログラムに関連するものはどちらも、これら によって生成されたファイルに対し、いかなるライセンス制限も課さない。 これはArtistic Licenseの第八条に従う:

    "Aggregation of this Package with a commercial distribution is
    always permitted provided that the use of this Package is embedded;
    that is, when no overt attempt is made to make this Package's
    interfaces visible to the end user of the commercial distribution.
    Such use shall not be construed as a distribution of this Package."

    [ 翻訳は 大原氏によるものから転載 Copyright (C) 2001 大原雄馬 ]

Therefore, you are absolutely free to place any license on the resulting executable, as long as the packed 3rd-party libraries are also available under the Artistic License.

それゆえ、最終的に生成される実行ファイルに対し、いかなるライセンスを 置く絶対的自由があなたにはある。ただし、パックされたサードパーティの ライブラリもArtistic Licenseの下に利用可能である限りは。

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.