NAME
pp - Perl Packager
SYNOPSIS
% pp hello # Packages 'hello' into executable 'a.out'
% pp -o hello hello.pl # Packages 'hello.pl' into executable 'hello'
% pp -p file # Creates a PAR file, 'file.par'
% pp -S -o hello file # Creates a PAR file, 'file.par',
# then packages it to executable 'hello'
% pp -p -o out.par file # Creates a PAR file, 'out.par' from 'file'
% pp -B -p -o out.par file # same as above, but bundles core modules
# (-B is assumed when making executables)
% pp -e 'print q//' # Packages a one-liner into 'a.out'
% pp -c -e 'print q//' # Creates a PAR file 'a.out.par'
% pp -I /foo hello # Extra paths (notice the space after -I)
% pp -M Foo::Bar hello # Extra modules (notice the space after -M)
% pp -r hello # Packages 'hello' into 'a.out', runs 'a.out'.
% pp -r hello a b c # Packages 'hello' into 'a.out', runs 'a.out',
# with arguments 'a b c'
% pp hello -log c # Packages 'hello' into 'a.out', logs
# messages into 'c'.
DESCRIPTION
pp creates standalone executables from Perl programs, using the compressed packager provided by PAR, and the dependency detection heuristics offered by Module::ScanDeps. The programs are stored verbatim without compilation.
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.
On Microsoft Windows platforms, a.exe is used instead of a.out as the default executable name.
OPTIONS
- -M module names
-
Adds the given modules to the dependency search patch and to the binary.
- -I library directories
-
Adds the given directories to the perl library file search path.
- -o output file name
-
Specifies the file name for the final packaged executable.
- -p PAR file name
-
Create PAR archives only; do not package to a standalone binary.
- -e perl code
-
Package a one-liner, much the same as
perl -e '...'
- -S
-
Do not delete generated PAR file after packaging.
- -v
-
Increase verbosity of output; can be repeated for more verbose output.
- -r
-
Run the resulting packaged script after packaging it.
- -log
-
Log the output of packaging to a file rather than to stdout.
ENVIRONMENT
- PP_OPTS
-
Command-line options (switches). Switches in this variable are taken as if they were on every pp command line.
NOTES
Here are some recipes showing how to utilize pp to bundle source.pl with all its dependencies, on target machines with different expected settings:
- Perl with PAR.pm and its dependencies installed:
-
% pp -p source.pl # makes source.par % echo "use PAR 'source.par';" > packed.pl; % cat source.pl >> packed.pl; # makes packed.pl (now deploy 'source.par' and 'packed.pl' to target machine) $ perl packed.pl # run it
- Perl with core module installed:
-
% pp -p source.pl # makes source.par % par.pl -b -Opacked.pl source.par # makes packed.pl (now deploy 'packed.pl' to target machine) $ perl packed.pl # run it
- Perl interpreter only, without core module:
-
% pp -B -p source.pl # makes source.par % par.pl -B -Opacked.pl source.par # makes packed.pl (now deploy 'packed.pl' to target machine) $ perl packed.pl # run it
- Clean setup:
-
% pp -Opacked.exe source.pl # makes packed.exe (now deploy 'packed.exe' to target machine) $ packed.exe # run it
SEE ALSO
PAR, Module::ScanDeps, par.pl, perlcc
ACKNOWLEDGMENTS
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.
Mattia Barbon for providing the myldr
binary loader code.
Jeff Goff for suggesting the name pp
.
AUTHORS
Autrijus Tang <autrijus@autrijus.org>
COPYRIGHT
Copyright 2002 by Autrijus Tang <autrijus@autrijus.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.