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"".