That's helpful, thanks. I'll switch to IPC::Run3 I think as I don't need anything really tricky but I would like to keep the same code across OSes.
PK On 23 May 2011, at 5:57 PM, Barrie Slaymaker wrote: > On 5/23/2011 7:23 AM, Philip Kime wrote: >> I don't really understand why this works fine unpacked but doesn't when >> packed ... > As Mark said below, this happens because the IPC::Run module on Win32 (only) > tries to run subprocesses using $^X, which normally contains the path to > perl.exe. However, when PAR packs an executable, $^X doesn't happen to point > to perl.exe, and so IPC::Run fails at that point. Implementing IPC::Run on > Windows without using subprocesses is an unsolved problem. > > IPC::Run::run() is almost always overkill for the tasks it's used for. I > wrote it and even I only use it rarely. As Roderich said, IPC::Run3 is > probably a faster, simpler choice. And Perl's backticks and pipe open were > designed for doing things like the example you show and are simpler and > faster than IPC::Run3 if you don't need to quote $filename or need kpsewich's > exit code. > > - Barrie > -- Dr Philip Kime