bengmau has asked for the wisdom of the Perl Monks concerning the following question:

oops sent this to perl discussions by mistake.. well here we go again:

Trying to use the perlcc to compile to a dos exe

That wouldn't work but I was able to do a perlcc -c to create a .c file

After installing gcc and trying to compile yielded a mountain of errors.   My code is quite simple.. loop, file in/out and is under strict context.   My only thing is that I reference the net:ethernet module.   I need to compile this since I need to put the app on a floppy to run on worksations without perl. any troubleshooting tips?

or conversely how can I create byte code of the perlscript and run it?

Replies are listed 'Best First'.
Re: compile perl to dos exe
by flyingmoose (Priest) on Jan 16, 2004 at 17:55 UTC
    You say "DOS", but if you don't mean "DOS" but rather "DOS Console", PAR is the tool for you. Linky

    PAR gives a program called pp that will compile to exe. You'll have to give the -M switch and specify you use Net::Ethernet.

    Size *might* be an issue given the floppy requirement.

    Anyhow, I've never heard of anyone having any luck getting an actual DOS binary out of gcc, but I do know PAR does an awesome job making Win32 console & gui executables.

      no I actually mean DOS. it's for preOS imaging settings. The requirements are to be able to boot with minimal DOS which will create a network file share on a floppy. I'm supposed to create compiled perl script to do some configuration settings based on the workstation environment's MAC address and execute their unattended install script. I didn't think it was so had to get a .pl file compiled.. sheesh =)
        Don't use Perl. Perl is not the best choice for all uses. Booting from a floppy and running in a limited environment is one of them. Perl is an interpreted language. Compiling it to binary code is hard. The perlcc is experimental. The perlcc docs says: "Use for production purposes is strongly discouraged."

        Some of the solutions suggested, like PAR and TinyPerl, package the interpreter and your script into an arhive which is unpacked at run-time. The Perl interpreter is big and you will have a hard time squeezing it down to fit on a floppy. Also, there may not be a place to unpack the archive.

        Also, there is a big difference between running Perl under Windows and DOS. There is a DOS port, but my impression was that it requires a 32-bit compiler and runtime environment. DJGPP is most often used.

        I bet you don't need an interpreted programming language for your application. Doing it in C would make the most sense and make it easy to fit on a single floppy.

Re: compile perl to dos exe
by bart (Canon) on Jan 16, 2004 at 18:28 UTC
    Perl on a floppy? Take a look at TinyPerl. (This is the announcement for 2.0 — older announcements: 1.0, 1.1)
Re: compile perl to dos exe
by flatline (Novice) on Jan 16, 2004 at 18:08 UTC
    I agree with using pp.pl, works great for me. I'd use ppm to install the pp/par code or it can be a mess. The only problem is that it seems to build an interpreter into the .exe, so even a small program is 1-1.5MB in size. Does anyone know if perlcc -> gcc yield a smaller executable?
      PAR is best installed from PPM, true. I have noticed that the ActivateState repositories (which I am thankful for, BTW) are a little stale for PAR. If you want the "--gui" option to run Perl/Tk apps without the DOS box popping up, for instance, you'll need to install PAR from CPAN.

      I can't remember whether PAR required a compiler (which would be the non-free MSVC) or not. Methinks not. There are a ton of dependencies though, most of which you can hopefully pull from PPM before you start.

      I'd like ActiveState to update their PPM database more frequently, but being they are doing us a great service in having what they have, I can't complain.