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