Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^6: pp and multiple perl scripts

by Anonymous Monk
on Mar 09, 2012 at 12:06 UTC ( [id://958696]=note: print w/replies, xml ) Need Help??


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

Do you have an idea why it does not know the "perl" command within the par packed executable when perl is not installed?

:) Um, because perl is not installed, its nowhere in the %PATH%, duh :p

Maybe you'd like to pack perl.exe (or parl.exe) as well? Depending on the kind of perl binary you have, that might be against the license (ActiveState)

update: I wouldn't recommend attempting it, you'll waste an hour and get nowhere

Also, see my links in Pack multiple scripts in executables with one shared core dll follow deep, and you'll know more. Same for these similar links

Replies are listed 'Best First'.
Solution - pp and multiple perl scripts
by Dirk80 (Pilgrim) on Mar 14, 2012 at 22:11 UTC

    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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://958696]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (None)
    As of 2024-04-25 01:21 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found