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

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 https://metacpan.org/dist/PAR/view/lib/PAR/Environment.pod.

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 https://metacpan.org/dist/PAR/view/lib/PAR/Environment.pod .

    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.