NAME
PAR::Environment - Index and reference of PAR environment variables
DESCRIPTION
PAR uses various environment variables both during the building process of executables or PAR archives and the use of them. Since the wealth of combinations and settings might confuse one or the other (like me), this document is intended to document all environment variables which PAR uses.
Wherever I want to refer to the $ENV{FOO}
environment hash entry, I will usually talk about the FOO
variable for brevity.
INDEX OF ENVIRONMENT VARIABLES
Please note that this is still very, very incomplete! Contributions welcome!
For each variable, there should be a description what it contains, when it can be expected to exist (and contain meaningful information), when it is sensible to define it yourself, and what effect this has.
Of course, the description may use examples.
PAR_0
If the running program is run from within a PAR archive or pp-produced executable, this variable contains the name of the extracted program (i.e. .pl file). This is useful of you want to open the source code file of the running program.
For example, if you package a file foo.pl into bar.par and run foo.pl with this command
par.pl foo.par bar.pl
then the PAR_0
variable will contain something like /tmp/par-tsee/cache-b175f53eb731da9594e0dde337d66013ddf25a44/495829f0.pl
where tsee
is my username and /tmp/par-tsee/cache-b175f53eb731da9594e0dde337d66013ddf25a44/
is the PAR cache directory (PAR_TEMP
).
This works the same for executable binaries (.exe, ...).
If you are looking for the name and path of the pp-ed binary file, please refer to the PAR_PROGNAME
variable.
PAR_ARGC, PAR_ARGV_0, PAR_ARGV_...
You should not rely on these variables outside of the PAR binary loader code.
These variables are set when a non-dependent pp-ed binary executable runs. The initially executed process extracts another binary and runs it as a child process. In order to pass its command line arguments to the child, the parent process sets PAR_ARG*
as they would be used in C programs: PAR_ARGC
has the number of arguments, PAR_ARGV_0
has the name of the executable, PAR_ARGV_*
are the command line arguments.
If you would like to access the name of the running program (script or binary), please refer to PAR_0
and PAR_PROGNAME
instead!
Related: PAR_SPAWNED
, PAR_0
, PAR_PROGNAME
PAR_CLEAN
# FIXME
PAR_DEBUG
If this variable is set to a true value and par.pl is run, verbose output is sent to STDOUT or the logging filehandle. This is overridden by the -q
option to par.pl.
This currently onlys influences par.pl. Whether this is the intended behaviour remains to be verified. # FIXME
PAR_GLOBAL_CLEAN
# FIXME
PAR_GLOBAL_TEMP
# FIXME
PAR_GLOBAL_TMPDIR
# FIXME
PAR_GLOBAL_DEBUG
# FIXME
PAR_INITIALIZED
This environment variable is for internal use by the PAR binary loader only.
PAR_PROGNAME
# FIXME
PAR_RUN
This environment variable was set during constructions of PAR::Packer
objects (usually during pp runs only) by versions of PAR up to 0.957. Since PAR 0.958, this variable is unused.
PAR_SPAWNED
This variable is used internally by the parl binary loader to signal the child process that it's the child.
You should not rely on this variable outside of the PAR binary loader code. For a slightly more detailed discussion, please refer to the who_am_i.txt documentation file in the PAR source distribution which was contributed by Alan Stewart. Related: PAR_ARGC
, PAR_ARGV_*
PAR_TEMP
# FIXME
PAR_TMPDIR
This needs some attention!
Do not set PAR_TMPDIR
. Set PAR_GLOBAL_TMPDIR
or PAR_GLOBAL_TEMP
instead.
While determining where to create the temporary directory PAR_TEMP
for the PAR cache of the running executable or PAR archive, PAR.pm and the corresponding C code in myldr/mktmpdir.c try to find the systems temporary path via various means.
First, the environment variable PAR_TMPDIR
is tried and used if it exists, then in order TMPDIR
, TEMPDIR
(since 0.958), TEMP
, TMP
.
Finally, the literal paths C:\\TEMP
, /tmp
and .
are tried as fallbacks.
Don't get this mixed up with PAR_TEMP
. PAR_TEMP
contains the temporary directory of this specific cache. If PAR_TMP
is, for example /tmp/foo
, then the cache directory (PAR_TEMP
) will be something like /tmp/foo/cache-XXXXXXXXXXXXXXXX
.
PAR_VERBATIM
The PAR_VERBATIM
variable controls the way Perl code is packaged into a PAR archive or binary executable. If it is set to a true value during the packaging process, modules (and scripts) are not passed through the default PAR::Filter::PodStrip
filter which removes all POD documentation from the code. Note that the PAR::Filter::PatchContent
filter is still applied.
The -F
option to the pp tool overrides the PAR_VERBATIM
setting. That means if you set PAR_VERBATIM=1
but specify -F PodStrip
on the pp
command line, the PodStrip
filter will be applied.
PAR_VERBOSE
Setting this environment variable to a positive integer has the same effect as using the -verbose
switch to pp.
PP_OPTS
During a pp run, the contents of the PP_OPTS
variable are treated as if they were part of the command line. In newer versions of PAR, you can also write options to a file and execute pp as follows to read the options from the file:
pp @FILENAME
That can, of course, be combined with other command line arguments to pp or the PP_OPTS
variable.
TMP, TEMP, TMPDIR, TEMPDIR
Please refer to PAR_TMPDIR
.
SEE ALSO
The PAR homepage at http://par.perl.org.
PAR, PAR::Tutorial, PAR::FAQ (For a more current FAQ, refer to the homepage.)
PAR::Dist for details on PAR distributions.
AUTHORS
Steffen Mueller <smueller@cpan.org>
http://par.perl.org/ is the official PAR website. You can write to the mailing list at <par@perl.org>, or send an empty mail to <par-subscribe@perl.org> to participate in the discussion.
Please submit bug reports to <bug-par@rt.cpan.org>. If you need support, however, joining the <par@perl.org> mailing list is preferred.
COPYRIGHT
PAR: Copyright 2006 by Audrey Tang, <cpan@audreyt.org>.
This document: Copyright 2006 by Steffen Mueller, <smueller@cpan.org>
Some information has been taken from Alan Stewart's extra documentation in the contrib/ folder of the PAR distribution.
This program or documentation is free software; you can redistribute it and/or modify it under the same terms as Perl itself.