Amiga PERL Port: Installation and User Guide Perl Version - 4.0.1.7 PatchLevel 35 Amiga Perl Port Version - 0.1.0 Maintainer: Kent Dalton - Kent.Dalton@FtCollinsCO.NCR.com 1. Introduction Welcome to the Amiga port of Perl 4.035. For those of you who may not be familiar with perl, it is a programming language that has become very popular among user of the Unix operating system. The language is very useful for the manipulation of text, files, and processes and the syntax is very C-like. Perl isinterpreted, which can be very convenient when developing small utilities and one-shot scripts. I'm calling the current version of Amiga Perl 'Beta' since it still has a couple of known, minor, bugs and fails a few of the regression tests. It is very usable, however, and I have not had any major problems (i.e. no gurus!) with it now that I have gotten it stabilized. Obviously, the program has no warranty, since it is free software. For more warranty and redistribution information, see the 'README', 'Copying', and 'Artistic' files that should have been included with the program. In the spirit of perl, I freely encourage users to modify the source code and fix bugs to their heart's content. I would like to remain the maintainer of Amiga perl, so if you have any bug-fixes or useful patches, let me know! (See the section on 'Reporting Bugs' below for more information.) 1.1. System Requirements o Amiga OS 2.04 or higher is absolutely required! Do not send e-mail asking about 1.3 and below support. Any such requests will be silently ignored. o An absolute minimum of 1Mb of memory is required to use perl. At least 3Mb is recommended for executing non-trivial scripts along with background processes and spawned processes. In general, the more RAM you have, the better. o A hard disk is strongly recommended. Perl will probably be pretty worthless without one. o A complete GCC 2.2.2 installation is recommended. It comes with a lot of the support stuff needed by perl (making perl easier to install) (ixpipe, ixemul, etc) and you can use it to hack the source (see 'Hacking' section below)! o I'm completely clueless as to how much stack perl requires but I'll bet it's a lot :^). I use between 45000 and 250000 for all of my shells so I suggest something within that range. 2. Installation 1. Install libs/ixemul.library in LIBS: 2. Install ixpipe handler, the ixemul Unix-like pipe handler. (See the documentation in the ixpipe directory for more information) 3. Make the following assigns if they do not already exist: 1. USR: - similar to UNIX /usr directory. 2. BIN: - similar to UNIX /bin directory. 3. DEV: - similar to UNIX /dev directory. 4. TMP: - similar to UNIX /tmp directory. 4. Copy or link the perl binary to a directory somewhere in your path. 5. Make a directory under usr:, usr:lib/perl 6. Copy the perl lib/ files to usr:lib/perl/. Perl will be able to automatically locate them there. Otherwise you'll have to set your environment variables up to find the lib files (see man page). 2.1. Caveats and Suggestions 2.1.1. Caveats The version of ixemul.library that comes with perl expects real Unix-style path-names. Devices are denoted by a leading '/', previous directories are denoted by '..'. For example: "/c/delete" in perl is the same as "C:delete" in AmigaDOS. "../../doc" in perl is the same as "//doc" in AmigaDOS. If you really hate this behavior (IMHO, it's a feature), you can reconfigure ixemul.library with the ixconfig stuff from the GCC distribution. Another caveat is that many Unix perl scripts will expect certain standard Unix tools to exist. I suggest hunting down any Unix work-alike tools you can find and putting them in BIN:. If anyone comes up with a good set of freely distributable ones, let me know and maybe we can include them in future binary distributions. 2.1.2. Suggestions I suggest adding the BIN: assign to your search path (preferably in your "user-startup" file). I also suggest making the BIN: to be a directory called "bin" in the USR: assign. This way, ixemul.library will translate references to both: "/usr/bin" and "/bin" to the BIN: assign. 3. Limitations Most of the limitations of this release are due to the fact that AmigaDOS is not Unix, which means that a number of the perl features do not make sense on a single-user, non-Unix, OS. o The fork function is not supported. o The functions related to passwords, user, and group id's are not supported. o The chroot function is not supported. o The dbm stuff is not supported. o Some scripts which expect "/dev/null" to exist will have to be modified since it does not exist on the amiga. 4. Known Bugs 4.1. Bugs Not Expected To Be Fixable o The "-e" option typically does not work as expected due to the way most Amiga shells handle quoting. I know csh 5.19, for one, fails very badly at this. This bug is basically beyond my control. o Scripts which expect the "#!" shell execution mechanism to work will fail. I've included a program called "cscript" to help alleviate this problem (more info in the cscript directory of this distribution.) 4.2. Bugs Expected To Be Fixed in Future Releases o Fails a number of tests (majority located in "op/*.t") due to missing Unix commands (cat, tr, etc). o Fails a few of the tests outright. 5. Reporting (and Fixing) Bugs Bugs that are general perl bugs go to Larry Wall (lwall@netlabs.com). Bugs specific to the Amiga should be reported directly to me (Kent.Dalton@FtCollinsCO.NCR.com). Don't expect an incredibly rapid response unless your problem is extremely serious... (You do have the source after all!) Speaking of the source, I fully welcome others to fix bugs or just plain hack the code and encourage those who do to send me fixes and patches via e-mail so I can include them in the main release. Please send patches as context diffs (if you don't have a program that can generate context diffs or don't know what context diffs are, let me know via e-mail). I will try to include a complete contributors list in future versions to give credit where it is due. 6. Hacking Perl Rebuilding this perl port requires GCC 2.2.2 with ixemul.library (Removing the dependence on GCC/ixemul would be pretty non-trivial.), God only knows how much RAM (probably a bare minimum of 4Mb without loading WB), a Hard Disk, and an accelerated CPU. Well, actually the accelerater is IMHO, but if you actually do try to rebuild perl on a 7MHz 68000 using GCC, I bet you'll end up agreeing with me! The Makefile was created for use with Ben Eng's BMake, any other reasonably full-featured make should be able to digest it, though. As configured with the Makefile, you should be able to build perl using gcc with no compilation errors (or even warnings). I've tried to preface most of the amiga-specific changes with #define AMIGA's. There really aren't tons of code changes. (The really hard part was getting it configured, etc and then isolating the little changes that were necessary (in such a big program)). 7. References There are basically two primary perl references for those of you who wish to learn perl. First, is the mega-man page that is included with this distribution. And second, is the book "Programming Perl" published by O'Reilly and Associates, ISBN: 0-937175-64-1. Both are highly recommended reading. The Reference Card that comes with the Perl book is also available in postscript and LaTeX formats via anonymous FTP from any site that archives the newsgroup comp.sources.misc 5