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