From: "Smith A. Cat" Newsgroups: comp.os.msdos.djgpp Subject: perl for djgpp -- some hints Date: 26 Sep 1997 18:19:00 -0700 Organization: Blue Square Laboratories Lines: 277 Message-ID: <342C5FAC.15D@primenet.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------7991EBB5316" To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk This is a multi-part message in MIME format. --------------7991EBB5316 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit After playing with Molnar Laszlo's excellent port of perl to djgpp i would like to offer some of my experiences to others doing the same. without further ado... --------------7991EBB5316 Content-Type: text/plain; charset=us-ascii; name="PERL5DOS.YES" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="PERL5DOS.YES" # after setting environment variables PERLLIB and PAGER as necessary, # since plain vanilla DOS uses the eight.three filenaming scheme, # to get perl perldoc -h to work do this: rename /text/shellwor /text/shellwor.pm rename autoload autoload.pm rename /auto/text/parsewor/shellwor /auto/text/parsewor/shellwor.al # now to get, say, "perldoc carp" to work, edit line 233 characters 38 and 39 # in PERLDOC. change the "$$" to "xx" or "__" or something like that, and # now the doc system works! # you will of course need to give the extension back to a number of library # modules. most of them get ".pm", some get ".pl". i'm not sure that it # would hurt anything to rename them all as ".pm". # thanks again Molnar! this is an excellent port, best one for DOS yet!! # phil # here are the correct filenames as far as i could tell: # (my directory structure is NOT the default structure for # this perl distribution, but the FILENAMES are what you # need to know, or want to know anyway... there is a surprise at the bottom of this post... c:\perl\lib\abbrev.pl c:\perl\lib\anydbm_f.pm c:\perl\lib\assert.pl c:\perl\lib\autoload.pm c:\perl\lib\autospli.pm c:\perl\lib\autouse.pm c:\perl\lib\benchmar.pm c:\perl\lib\bigfloat.pl c:\perl\lib\bigint.pl c:\perl\lib\bigrat.pl c:\perl\lib\blib.pm c:\perl\lib\cacheout.pl c:\perl\lib\carp.pm c:\perl\lib\cgi.pm c:\perl\lib\chat2.pl c:\perl\lib\complete.pl c:\perl\lib\config.pm c:\perl\lib\constant.pm c:\perl\lib\cpan.pm c:\perl\lib\ctime.pl c:\perl\lib\cwd.pm c:\perl\lib\diagnost.pm c:\perl\lib\dirhandl.pm c:\perl\lib\dotsh.pl c:\perl\lib\dumpvar.pl c:\perl\lib\dynaload.pm c:\perl\lib\english.pm c:\perl\lib\env.pm c:\perl\lib\exceptio.pl c:\perl\lib\exporter.pm c:\perl\lib\fastcwd.pl c:\perl\lib\fcntl.pm c:\perl\lib\filecach.pm c:\perl\lib\filehand.pm c:\perl\lib\find.pl c:\perl\lib\findbin.pm c:\perl\lib\finddept.pl c:\perl\lib\flush.pl c:\perl\lib\ftp.pl c:\perl\lib\getcwd.pl c:\perl\lib\getopt.pl c:\perl\lib\getopts.pl c:\perl\lib\hostname.pl c:\perl\lib\importen.pl c:\perl\lib\integer.pm c:\perl\lib\io.pm c:\perl\lib\less.pm c:\perl\lib\lib.pm c:\perl\lib\locale.pm c:\perl\lib\look.pl c:\perl\lib\newgetop.pl c:\perl\lib\opcode.pm c:\perl\lib\open2.pl c:\perl\lib\open3.pl c:\perl\lib\ops.pm c:\perl\lib\overload.pm c:\perl\lib\perl5db.pl c:\perl\lib\pwd.pl c:\perl\lib\safe.pm c:\perl\lib\sdbm_fil.pm c:\perl\lib\selectsa.pm c:\perl\lib\selfload.pm c:\perl\lib\shell.pm c:\perl\lib\shellwor.pl c:\perl\lib\sigtrap.pm c:\perl\lib\stat.pl c:\perl\lib\strict.pm c:\perl\lib\subs.pm c:\perl\lib\symbol.pm c:\perl\lib\syslog.pl c:\perl\lib\tainted.pl c:\perl\lib\termcap.pl c:\perl\lib\timeloca.pl c:\perl\lib\universa.pm c:\perl\lib\validate.pl c:\perl\lib\vars.pm c:\perl\lib\auto\dynaload\autospli c:\perl\lib\auto\dynaload\dl_expan.al c:\perl\lib\auto\dynaload\dl_findf.al c:\perl\lib\auto\dynaload\dl_find_.al c:\perl\lib\auto\dynaload\dynaload.a c:\perl\lib\auto\dynaload\extralib c:\perl\lib\auto\fcntl\extralib c:\perl\lib\auto\fcntl\fcntl.a c:\perl\lib\auto\io\extralib c:\perl\lib\auto\io\io.a c:\perl\lib\auto\opcode\extralib c:\perl\lib\auto\opcode\opcode.a c:\perl\lib\auto\sdbm\extralib c:\perl\lib\auto\sdbm_fil\extralib c:\perl\lib\auto\sdbm_fil\sdbm_fil.a c:\perl\lib\auto\text\parsewor\autospli c:\perl\lib\auto\text\parsewor\old_shel c:\perl\lib\auto\text\parsewor\quotewor.al c:\perl\lib\auto\text\parsewor\shellwor.al c:\perl\lib\bundle\cpan.pm c:\perl\lib\cgi\apache.pm c:\perl\lib\cgi\carp.pm c:\perl\lib\cgi\fast.pm c:\perl\lib\cgi\push.pm c:\perl\lib\cgi\switch.pm c:\perl\lib\class\struct.pm c:\perl\lib\cpan\firsttim c:\perl\lib\cpan\nox.pm c:\perl\lib\devel\selfstub.pm c:\perl\lib\extutils\command.pm c:\perl\lib\extutils\embed.pm c:\perl\lib\extutils\install.pm c:\perl\lib\extutils\liblist.pm c:\perl\lib\extutils\makemake c:\perl\lib\extutils\manifest.pm c:\perl\lib\extutils\miniperl.pm c:\perl\lib\extutils\mkbootst.pm c:\perl\lib\extutils\mksymlis.pm c:\perl\lib\extutils\mm_os2.pm c:\perl\lib\extutils\mm_unix.pm c:\perl\lib\extutils\mm_vms.pm c:\perl\lib\extutils\mm_win32.pm c:\perl\lib\extutils\testlib.pm c:\perl\lib\extutils\typemap c:\perl\lib\extutils\xsubpp c:\perl\lib\file\basename.pm c:\perl\lib\file\checktre.pm c:\perl\lib\file\compare.pm c:\perl\lib\file\copy.pm c:\perl\lib\file\dosglob.pm c:\perl\lib\file\find.pm c:\perl\lib\file\path.pm c:\perl\lib\file\stat.pm c:\perl\lib\getopt\long.pm c:\perl\lib\getopt\std.pm c:\perl\lib\i18n\collate.pm c:\perl\lib\io\file.pm c:\perl\lib\io\handle.pm c:\perl\lib\io\pipe.pm c:\perl\lib\io\seekable.pm c:\perl\lib\io\select.pm c:\perl\lib\io\socket.pm c:\perl\lib\ipc\open2.pm c:\perl\lib\ipc\open3.pm c:\perl\lib\math\bigfloat.pm c:\perl\lib\math\bigint.pm c:\perl\lib\math\complex.pm c:\perl\lib\math\trig.pm c:\perl\lib\net\hostent.pm c:\perl\lib\net\netent.pm c:\perl\lib\net\ping.pm c:\perl\lib\net\protoent.pm c:\perl\lib\net\servent.pm c:\perl\lib\pod\function.pm c:\perl\lib\pod\html.pm c:\perl\lib\pod\text.pm c:\perl\lib\search\dict.pm c:\perl\lib\site\_exists c:\perl\lib\sys\hostname.pm c:\perl\lib\sys\syslog.pm c:\perl\lib\term\cap.pm c:\perl\lib\term\complete.pm c:\perl\lib\term\readline.pm c:\perl\lib\test\harness.pm c:\perl\lib\text\abbrev.pm c:\perl\lib\text\parsewor.pm c:\perl\lib\text\soundex.pm c:\perl\lib\text\tabs.pm c:\perl\lib\text\wrap.pm c:\perl\lib\tie\hash.pm c:\perl\lib\tie\refhash.pm c:\perl\lib\tie\scalar.pm c:\perl\lib\tie\substrha.pm c:\perl\lib\time\gmtime.pm c:\perl\lib\time\local.pm c:\perl\lib\time\localtim.pm c:\perl\lib\time\tm.pm c:\perl\lib\user\grent.pm c:\perl\lib\user\pwent.pm GOSH, you read all the way to here! well then, here's perlmain.c, which you can have fun with by putting the files in CORE into the appropriate places (libperl.a in your DJGPP libs directory, all the .h's into, say, /include/perl, and then you can compile perl, or EMBED perl in your C programs. see perlembed.pod for further confusion... /* * "The Road goes ever on and on, down from the door where it began." */ #include #include # define EXTERN_C extern static void xs_init _((void)){}; static PerlInterpreter *my_perl; int main(int argc, char **argv, char **env) { int exitstatus; PERL_SYS_INIT(&argc,&argv); perl_init_i18nl10n(1); /* now there's an interesting function name */ if (!do_undump) { my_perl = perl_alloc(); if (!my_perl) exit(1); perl_construct( my_perl ); perl_destruct_level = 0; } exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL ); if (!exitstatus) { exitstatus = perl_run( my_perl ); } perl_destruct( my_perl ); perl_free( my_perl ); PERL_SYS_TERM(); exit( exitstatus ); } --------------7991EBB5316--