home *** CD-ROM | disk | FTP | other *** search
- This is the executable for Larry Wall's perl program, ported to MS-DOS.
- This version is based on patch level 41, but has a number of extensions
- beyond that. These extensions have been sent to the author, and will
- appear in future patches. Stay tuned to USENET comp.lang.perl.
-
- This was compiled with Microsoft C 6.0 and optimized for space:
- -Oegcilsza -Gs was used. It has been tested with MS-DOS 3.3 and 4.01
- on a 80386 and a 80286, but it should work even on an 8088 and with
- DOS 2.x. (But it will be slow.) You will probably need 640K to
- get anything done.
-
- Perl was originally ported to MS-DOS by Diomidis Spinellis in March, 1990.
- That code came out at patch level 18 and has undergone only minor changes
- through patch level 41.
-
- Perl, complete with manuals and all source code, can be obtained by
- anonymous ftp from
- jpl-devvax.jpl.nasa.gov (128.149.1.143).
-
- --
- Len Reed
- gatech!holos0!lbr
- November 19, 1990
-
- -------------------
-
- Enhancements in this code that are not in patch level 41.
-
- 1) Perl.exe will swap itself to disk (ideally a RAM disk in extended memory)
- when running subprocesses. This applies to the -P subprocess and to
- pipe subprocesses and "system" subprocesses. This recovers all but about
- two K-bytes of the over 300K that perl.exe uses. See README.env for
- how to control swapping.
-
- 2) MKS (Mortice Kern Systems) toolkit compatibility. Perl will accept the
- extended argument list (8 K-byte or more of pre-globbed arugments) from
- the MKS Korn shell, and can pass extended argument lists to subprocesses.
- This is upwardly compatible from the normal 128 byte DOS conventions, and
- can be disabled. Refer to README.env.
-
- 3) Subprocesses now return the proper Unix-like exit status as documented
- for the system and close (a pipe) commands.
-
- 4) As in Unix, subprocesses inherit only handles 0, 1, and 2. (DOS 2.x
- subprocesses inherit all handles.)
-
- 5) -P now works, at least with Microsoft C 6.0. Perl runs a perl subprocess
- with script doscpp.pl. Editing this script may allow it to work for
- other compilers.
-
- 6) The chdir command has been enhanced (by Tom Dinger) to allow changing the
- current drive and/or the current directory. Examples:
- chdir "/abc"; # change to /abc on current drive
- chdir "a:"; # change default drive to A:
- chdir "a:/xyz"; # change default drive to A:, then chdir to /xyz
- chdir "a:qrs"; # change default drive to A:, then chdir to
- # subdirectory QRS of the current A: directory
-
- MKS Korn shell users should note that the semantics of the Korn shell
- chdir are a little different. Changing drives in perl does not, as in
- the ksh, return you to the root of the new drive.
-
- 7) The -i (edit in place) option now uses the renaming techniques in
- os2/suffix.c
-
- 8) Globbing of incoming arguments now uses the Microsoft setargv code.
- Globbing is MS-DOS, not Unix, style, so that *.* matches everything.
- Only double, not single, quotes are supported, but you can put a quote
- inside quotes by escaping it: perl -e "print \"hello, world\n\";"
- (MKS Korn shell users use the full Unix-like syntax, of course.)
-
- 9) Control of temporary files and scripts is under environmental control
- so that the executable can be moved from system to system without
- recompiling. See README.env.
-
- 10) Signal handling and temporary file manipulation are married so that
- the temporary files are deleted whenever perl exits.
-
- 11) The Korn shell is used to expand expressions like <*.c> if it is present.
- If it is not present, perlglob.exe is used as in patch level 18. (But
- note the name change from earlier versions where it was glob.exe.)
-
- 12) Various bug fixes and minor enhancements: -w now works, opendir will
- now fail when it should, random numbers now work, etc.
-
-
- Acute Problems
- ---------------
-
- 1) The perl exec command (not system, but exec) needs work. It is not
- MKS compatible and may not work at all under some systems. It may
- leave temporary files stranded.
-
- 2) Perl.exe uses 300 K-bytes before it even calls malloc. It probably should
- be made to use overlays and certainly has to be made smaller.
-
-
- Desirable Enhancements
- ----------------------
-
- 1) Using gdbm.
-
- 2) Use of the 64-K high memory area.
-
- 3) User-controllable use of extended memory.
-
- 4) Porting to Turbo C and Unix-dos cross compilers. (This version works
- only with Microsoft C 5.x and 6.0.)
-
- Anyone interested in working on perl.exe or with ideas for DOS perl should
- write Len Reed at gatech!holos0!lbr.
-