Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: pp (PAR-Packer) - how to access included data files

by swl (Parson)
on Nov 06, 2022 at 21:35 UTC ( [id://11148014] : note . print w/replies, xml ) Need Help??

in reply to pp (PAR-Packer) - how to access included data files

The post linked to by marto has a good example of checking if running under PAR and then accessing the file accordingly.

More details about the environment variables used by PAR can be seen at

Replies are listed 'Best First'.
Re^2: pp (PAR-Packer) - how to access included data files
by ibm1620 (Hermit) on Nov 07, 2022 at 00:14 UTC
    I wasn't really clear about the use of PAR_TEMP, given the advice not to use it in .

    I finally figured out that "/", which the doc says is the root under which included files are stored, could be computed at runtime by dirname($ENV{PAR_0}) . "/inc".

      dirname($ENV{PAR_0}) . "/inc".

      Why you want to go low level when you have this? :

      # PAR::read_file() returns a file inside any loaded PARs my $conf = PAR::read_file('data/MyConfig.yaml');

      (from SYNOPSIS)

        I must have overlooked read_file(). Thanks.

        In my case, the easiest approach was to doctor the @ARGV before processing it, as follows:

        if (exists $ENV{PAR_TEMP}){ # running via PAR/pp push @ARGV, "$ENV{PAR_TEMP}/inc/lex.dict"; }

      The docs could be a bit clearer but my reading is that PAR_TEMP should not be assigned to but is fine to read from.

      Your approach will still work, though.