Search code examples
perlzippar

How do I detect if a program is running within a PAR archive?


I'm working on a large Perl application which gets bundled with PAR, along with a bunch of support files.

When the app is running within PAR, I can use PAR::read_file to get at these various files inside the archive. However, while I'm developing, I don't want to have to re-PAR the whole application every time I tweak some code.

Is there a way that I can tell if the script is running within PAR or not at runtime, so I can choose to load the file from the PAR archive or the regular filesystem?


Solution

  • PAR::Environment can probably offer some clues:

    PAR uses various environment variables both during the building process of executables or PAR archives and the use of them.

    ...

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