in reply to Re^6: pp and multiple perl scripts
in thread pp and multiple perl scripts

Hello,

thank you for all your links. They were very interesting. In the meantime I tried cava packager which is also a good packaging tool.

But I like it to solve problems. And I like the one file concept of pp and so I did not give up. And now I have found the complete solution.

  1. pp -p -B -o packed_script.par main_script.pl helper_script.pl
  2. Add the file "main.pl" to "packed_script.par" in the script folder where now also are "main_script.pl" and "helper_script.pl".

    main.pl

    if (defined $ENV{PAR_APP_REUSE}) { my $filename = $ENV{PAR_APP_REUSE}; delete $ENV{PAR_APP_REUSE}; $ENV{PAR_0} = $filename; PAR::_run_external_file($filename, 1); exit(); } my $zip = $PAR::LibCache{$ENV{PAR_PROGNAME}} || Archive::Zip->new(__FI +LE__); my $member = eval { $zip->memberNamed('script/main_script.pl') } or die qq(main.pl: Can't open perl script "script/main_script. +pl": No such file or directory ($zip)); PAR::_run_member($member, 1);
  3. pp -o  packed_script --reusable packed_script.par

Here how to call the external helper script from the main script:

############################################################# # part in the main_script.pl where the helper script is invoked ############################################################# my $cmd; if( defined $ENV{PAR_TEMP} ) { $cmd = "$0 --par-options --reuse $ENV{PAR_TEMP}/inc/script/helper_ +script.pl"; } else { $cmd = "perl helper_script.pl"; } # invoke cmd

Now the main script and another external script "helper_script.pl" are packed in one standalone executable. It is running without the need of a perl installation. And all needed modules are packed.

Feedback to this solution is welcome.

Cheers, Dirk

Replies are listed 'Best First'.
Re: Solution - pp and multiple perl scripts
by Anonymous Monk on Feb 24, 2022 at 14:26 UTC