01 Welcome to the Perl course

This course is an introduction to Perl. It assumes that you have no
knowledge of Perl whatsoever, but that you have at least written
small programs in some other language. (More on that in a moment.)

The purpose of the course is not to make you a master of Perl, but
to make you proficient enough to write basic Perl programs and to
read other people's Perl code.

The lessons will go on a weekly cycle: one every Friday (including
one later today).

It's recommended that you do at least the first exercise from each
week, unless you apply what you read by writing something similar
on your own. Exercises beyond the first one are more exploratory and
so are optional: you do them if you have time. The optional exercises
will bring you a greater knowledge of Perl, but if you don't have
time for them, the first exercise is enough to get the basics.

A solution to each week's exercises will be provided the following
week.

When you complete an exercise, you can do one of three things with
it:
1) keep it to yourself
2) send it to me and I'll critique it
3) send it to the list for everyone to discuss (but give everyone
else a few days to work on it before sending your solution)

Any of these are okay, but I encourage you to send non-trivial
answers to the list so that everyone else can consider them. There
Is More Than One Way To Do It (TIMTOWTDI, pronounced Tim-Towtdy).

When discussing someone else's solution, of course please be polite
about it. Point out obscure cases that weren't taken into account
(unless they're obvious), remembering that the author may have
intentionally ignored them: it *is* just an exercise after all!

Any other discussion or questions are also welcome. I welcome private
questions/comments, but I encourage you to write to the list - even if
it's to complain that something wasn't explained well enough. ;-)

A few people wrote to me in surprise that I discourage learning Perl
as a first language. This is because I believe that some other
language (ANY other language) would be a better tool to learn
programming. Perl has no constants, virtually no data
types, and its handling of structs and exceptions is very poor
compared to almost any other language. In addition, Perl's wide
variety of choices require the experience to choose well. I recommend
starting with some other language, such as Python, Ruby, Java or
(for the stalwart) C++. However, the choice to learn Perl is
ultimately yours; everyone is welcome in this course.

--
[M]y wife and I attended grad school in linguistics at Berkeley
and UCLA. At the time, we were actually planning to be
missionaries (more specifically, Bible translators), but we had
to drop that idea for health reasons. Funny thing is, now the
missionaries probably get more good out of Perl than they'd have
gotten out of me as a missionary. Go figure.
- Larry Wall (inventor of Perl)