par.pl(1)

par.pl1

Make and run perl archives

Usage

To make a PAR distribution from a CPAN module distribution:

To manipulate a PAR distribution:

To use Hello.pm from ./foo.par:

Run test.pl or script/test.pl from foo.par:

To make a self-containing script containing a PAR file :

To embed the necessary non-core modules and shared objects for PAR's execution (like "Zlib", "IO", "Cwd", etc), use the -b flag:

Overview

This stand-alone command offers roughly the same feature as "perl -MPAR", except that it takes the pre-loaded .par files via "-Afoo.par" instead of "-MPAR=foo.par".

Additionally, it lets you convert a CPAN distribution to a PAR distribution, as well as manipulate such distributions. For more information about PAR distributions, see PAR::Dist.

Binary PAR loader (parl)

If you have a C compiler, or a pre-built binary package of PAR is available for your platform, a binary version of par.pl will also be automatically installed as parl. You can use it to run .par files:

    # runs script/run.pl in archive, uses its lib/* as libraries
    % parl myapp.par run.pl     # runs run.pl or script/run.pl in myapp.par
    % parl otherapp.pl          # also runs normal perl scripts

However, if the .par archive contains either main.pl or script/main.pl, it is used instead:

    % parl myapp.par run.pl     # runs main.pl, with 'run.pl' as @ARGV

Finally, the "-O" option makes a stand-alone binary executable from a PAR file:

    % parl -B -Omyapp myapp.par
    % ./myapp                   # run it anywhere without perl binaries

With the "--par-options" flag, generated binaries can act as "parl" to pack new binaries:

    % ./myapp --par-options -Omyap2 myapp.par   # identical to ./myapp
    % ./myapp --par-options -Omyap3 myap3.par   # now with different PAR

Stand-alone executable format

The format for the stand-alone executable is simply concatenating the following elements:

•

The executable itself

Either in plain-text (par.pl) or native executable format (parl or parl.exe).

•

Any number of embedded files

These are typically used for bootstrapping PAR's various XS dependencies. Each section contains:

The magic string ""FILE""
Length of file name in pack('N') format plus 9
8 bytes of hex-encoded CRC32 of file content
A single slash (""/"")
The file name (without path)
File length in pack('N') format
The file's content (not compressed)
•

One PAR file

This is just a zip file beginning with the magic string ""PK\003\004"".

•

Ending section

The pre-computed cache name. A pack('Z40') string of the value of -T (--tempcache) or the hash of the file, followed by "\0CACHE". The hash of the file is calculated with Digest::SHA.

A pack('N') number of the total length of FILE and PAR sections, followed by a 8-bytes magic string: ""\012PAR.pm\012"".

Authors

Audrey Tang <[email protected]>, Steffen Mueller <[email protected]>

You can write to the mailing list at <[email protected]>, or send an empty mail to <[email protected]> to participate in the discussion. Archives of the mailing list are available at <https://www.mail-archive.com/[email protected]/> or <https://groups.google.com/g/perl.par>.

Please submit bug reports to <https://github.com/rschupp/PAR-Packer/issues>.

From perl-par-packer 1.064-6 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.