Hi,

The following may be worth a try then, assuming pp passes all the arguments and assigning to S^X doesn't break everything else. :-)

The code attempts:

If I am packed exec and this is windows {
  assign my execpath to $^X
  Check if this is special case of IPC::Run::Win32Pump
    run IPC::Run::Win32Pump and return.


So $^X -MIPC::Run::Win32Pump -e 1 blah blah
when called from pp packed executable ought to work


BEGIN {

    if($^O =~ /^mswin/i && defined($ENV{PAR_0}) && -f $ENV{PAR_0} ) {
        $^X = $ENV{PAR_PROGNAME};
        my $command = join(' ', @ARGV);
if($command =~ / -MIPC::Run::Win32Pump -e 1 \d+ \d+ \d+ \d+ \d+ \d+ \d+ /) {
            while( my $arg = shift( @ARGV )) {
                last if($arg eq '1');
            }
            eval{ require IPC::Run::Win32Pump; };
            die $@ if $@;
            return;
        }
    }
}





On 23/05/2011 13:19, Roderich Schupp wrote:
On Mon, May 23, 2011 at 1:34 PM, Mark Dootson<mark.doot...@znix.com>  wrote:
$^X -MIPC::Run::Win32Pump -e 1 blah blah

Come to think of it, to make my ugly code work I think you need to use the
--reuse option to pp - then I assume you get something workable in $^X.

It's even more complicated :(

- $^X is always the dummy string "perl"
- instead of $^X one could use
      $ENV{PAR_PROGNAME}  --par-options --reuse
- the original script must have been packed with "pp --reusable ..."
- even then perl command line options (e.g. -M, -e) won't work

See also the recent thread about similar problem with POE.

Cheers, Roderich

Reply via email to