This is the start of a tutorial on Perl, originally run by me, Nik Silver, as the first part of a one-day hands-on workshop at the School of Computer Studies, University of Leeds, in the UK. The second part of the workshop looked at designing pages for the World Wide Web using Perl to deal with buttons and text boxes to generate custom Web pages on the fly. Creating a Web page without all these things is a much easier task. There is information about how to do this at Leeds but otherwise you should look at NCSA's definitive Beginner's Guide to HTML. There are plenty of other Perl tutorials around, and most (if not all) of them can be found at the UF/NA Perl Archive. However I wanted something that included exercises developing a consistent theme; none of the others seemed to do this. This tutorial assumes a very basic knowledge of UNIX and concentrates on how to write basic working perl programs. It does not explain why many things are as they are, nor does it draw generalisations about the language; it is assumed that the reader can make most of these inferences correctly for themselves. You can find more information on those topics elsewhere (see above). Thanks to Neil Bowers whose Perl page is where I ripped off the camel icon (though he ripped it off someone before me, of course) and to our Support team for their technical wizardry. The structure of this tutorial is as follows: * A basic perl program + The first line + Comments and statements + Simple printing * Running the program * Scalar variables + Operations and assignment + Interpolation + Exercise * Array variables + Array assignments + Displaying arrays + Exercise * Filehandling + Exercise * Control structures + foreach + Testing + for + while and until + Exercise * Conditionals + Exercise * String matching + Regular expressions + The $_ special variable + More on REs + Some example REs + Exercise * Substitution and translation + Options + Remembering patterns + Translation + Exercise * Split + Exercise * Associative arrays + Operators + Environment variables * Subroutines + Parameters + Returning values + Local variables ______________________________________________________________