in reply to Re: Using Perl subroutines in a Perl2Exe exe file
in thread Using Perl subroutines in a Perl2Exe exe file

Great stuff! Thanks VERY much! I used PAR's pp program to build an .exe, and this .exe (unlike the ones produced by Perl2Exe and PerlApp) worked great on my development system!

But then, I copied this .exe to another system (one without Perl) and ran it. It died, with:

E:\>foo.exe
: Win32::Process::Create() at IPC/Run.pm line 2097
: Win32::Process::Create() at IPC/Run.pm line 2216
: Win32::Process::Create() at IPC/Run.pm line 2216

A Perl guru in another place had told me that this indicates IPC::Run-spawned processes could not locate Perl at run time; he directed me to add:

# BEGIN { $^X = 'C:\Perl\bin\perl.exe' }

to my program. This worked, as long as there was a perl.exe file at that location. Since my 'other' system does not have any Perl installed, that file didn't exist.

I guess I had ASSumed that PAR/pp provided Perl. Not so? If not, can I just bundle perl.exe into my .exe file, and have it work?

Thanks!
tl

  • Comment on Re^2: Using Perl subroutines in a Perl2Exe exe file

Replies are listed 'Best First'.
Re^3: Using Perl subroutines in a Perl2Exe exe file
by hydo (Monk) on Jul 02, 2005 at 07:26 UTC
    I don't have a PC to test it on at the moment, so I can't tell you exactly where it is, but I do know two things:

    1. There *is* a copy of the interpreter bundled by default in PAR exe files.

    2. You can create your PAR exe, then unzip it with whatever you use for .zip files, and look at the directory structure. As I understand it, and hopefully someone will correct me if I'm wrong, the cwd when the .exe file is running will the the top level of that directory structure. You should then be able to modify that BEGIN line with the relative path of the interpreter and make it work. Well, that and taking out the "#" that's making it a comment. :)

    Again, I can't test this but I think it should work or at least put you on the path to.... errmm.... workitude?