Alan,
I would be greatly interested. I deal with a few collaborators on my
project who are Perl programmers and I need to do occasional parsing of data
for database transactions.
Thanks,
____
Jeff Holmes
Systems Programmer
C elegans Gene Knockout Project
Oklahoma Medical Research Foundation
Phone:405.271.1577
Fax:405.271.7050
____
-----Original Message-----
From: Alan Shields [mailto:[log in to unmask]]
Sent: Thursday, March 20, 2003 10:30 PM
To: [log in to unmask]
Subject: Perl
I tendered a possible offer after some people said they would be interested.
After speaking with my PI, I've decided to definitely do this. What is it
that I've definitely decided to do? Well....
Please forward to whomever might be interested. If you have any questions,
email me at [log in to unmask]
To anyone in the OMRF who is interested:
Alan Shields will be offering a course on Perl programming for fun and
profit.
If you want to learn Perl, please let me know if you are interested.
For those of you who do not know, Perl is a scripting language with many
capabilities. It is designed, in the words of its creator, to "make easy
things easy, and hard things possible."
Perl is incredibly powerful. Some of the things it is commonly used for:
- Text processing
Ever needed to change text around? Just last week we got an excel
sheet from
a client who needed all the negative numbers converted to 0s. I
don't know a
thing about Excel macros, but Perl was able to do all of that in 16
*characters* of code. No, I'm not kidding.
- Web page processing
There was a database online that was only accessible from a web
form. We had
to look up about 300 items on the database in an organized manner
and cull
the information we didn't need and reformat the information we did
need, and
eliminate duplicate results. One day later I had something up and
running just fine - and that was with me trying several different
approaches
and learning 4 libraries. Result: 200 lines of quite readable code.
- Simple mathematical processing
Have an algorithm you need to run to find the best choice for
something? I
had to figure out the optimal number of steps to take for a backup
server to
allow for sufficient expansion in the future and take into account
probable
financial situations. Brute force algorithm that would've taken
quite a while
to run by hand. 80 lines of script later, I had an optimal solution
figured
out.
- Systems administration
Need to copy files hither and yon and interact with programs in a
consistent
manner? Perl can do everything you can do on a command line easily,
and
can call all of the Windows API, any C library. Quickly. Easily.
- Web applications
While not as easy as PHP or ASP, Perl can do quite a bit - arguably
more.
I participated for more than a year as a developer of Bugzilla - a
very large
bug tracking program entirely written in Perl.
- Database interaction
Need a quick script to modify many entries in a database? Perl has
an
excellent database abstraction layer, and you get all the other
abilities
of Perl
And it's fast. Perl is very, very fast. Processing thousands of lines of
text
in a second is not uncommon.
It's cross-platform: unless it's poorly written or written specifically for
one task (such as it makes Win32 API calls), Perl will work on Windows, Mac,
Linux, FreeBSD, QNX, Amiga, BeOS, etc, etc, etc.
It's free. Anyone can download the runtime for Perl for free for any
platform.
In fact, it's Free - you can even give the runtime (which is all people need
to write and run code) to other people without violating copyright laws*.
Isn't that a nice change?
There is a huge library of code already out there. More than 4,500 libraries
centrally available and downloadable for free with source code. One of my
friends's common lament is that he used to have so many neat programming
projects until he got started on Perl...and everything he wanted to do was
already done. If that sounds like the kind of dissapointment you're prepared
to handle, definitely attend these meetings.
Alright, I've finished talking about what Perl is. Now let's talk about how
and when I'll be teaching it, and what I'll cover. Oh, and who my target
audience is.
First, let's cover the target audience bit:
This first set of lessons will be laying the groundwork for other people to
learn Perl. I don't think any of us have the time to be THE repository for
all knowledge Perlish for the OMRF - I know I certainly don't. Therefore, I
will be teaching these people both to help them, and also in the hopes that
some of these prospective students will be willing to help teach and support
others in the OMRF.
Therefore, I would prefer people who have some programming experience. Here
is
a good litmus test for whether or not you should wait for the next series
(don't worry, it won't be too long!)
Do you know about...
- variables
- functions
- order of operations
If you do, then sign up. If you don't...you might get a bit lost and
frustrated. Wait until we get the support infrastructure in place for you,
and everything will work better. You'll be happier, and I'll be happier.
Now, don't worry: I'm not going to be blowing through this as fast as
possible. Like I said, I want people to be able to help later. Therefore, my
goal is to produce people who know the basics, know a bit of the advanced
stuff, and know where to go to find out more. The latter bit of the class
will be focused on specific topics that you can immediately put to use.
I will be teaching in a short lecture and socratic style. Participation will
help you a bunch...Perl isn't just something you can read about and listen
to
and expect to immediately use.
I expect the first try here to be full of mistakes and rabbit trails - a
spirit of adventure and the willingness to let me be totally and abysmally
wrong will definitely be a plus from my perspective.
Now that I've patronized a bit (I don't know to whom this email will be
going!), let me say that I've met several people interested in this topic,
and I have respect for your abilities. I'm sure everything will work out
great. This will be a teaching-amongst-equals.
As to what I'll be covering, this is my proposed outline:
- syntax of perl
- philosophy of perl (short)
- regular expressions
- functions and classes
- packages and namespaces
- CPAN (or "big huge freaking mondo pile of useful and free packages")
- LWP (or "Perl's connection to the internet")
- DBI (the database toolkit)
- POD (a way to document your code easily)
- a few topics-by-request
That's in no particular order, but the first few will be done first.
During and after the course, I will try to maintain a mailing list for
Perl-specific help and peer review. If people are interested, I can also
include them in my occaisional Perl Challenges, which are usually in the
easy-to-medium difficulty range, and are mostly just to keep your skills
sharp. They usually require no more than 30 minutes of work for the basic
solution. If that.
Ok, if you're still reading, the big question in your mind is probably
"when?"
Soon. As soon as I get enough people together. I'd prefer to start next week
or the week after. As I'm making up the coursework as we go along (guided by
where we want to go and my knowledge of Perl), there's no reason for me to
wait a long time. I would prefer to hold the classes from 5p to 6p on Mon,
Tue, Wed, or Thur. If people would prefer, we could start at 4:30p, instead.
I'd prefer not to conflict with the ISG meeting at 4p on the 3rd Thursday of
the month.
If those times are not acceptable, then I MAY be willing to do a
lunch-n-code,
on a day in Mon-Fri. I'd really prefer not to do this. You don't want to see
me eat, besides, and I can hardly talk when I can smell everyone's lunch.
So, if you're interested, email me at [log in to unmask] Give me
times when you'll be available, a preferred time and date, and anything
special you'd like me to cover.
If you would like a good reference book on what we'll be covering, the
O'Reilly book "Programming Perl" 3rd edition (I believe that's the latest
edition) is quite good. Todd liked Learning Perl, and you may find that
useful to follow along in some sections. I won't be teaching from it,
however. Online resources such as perldoc.com will be very useful for
getting
nicely-formatted information on CPAN and other such libraries.
If you like this course, you may also like the short course I will be doing
later (if there is interest) in modern development practices. I will be
covering CVS, bug reporting, test cases, diff/patch, and perhaps extreme
programming. Something for everyone.
Finally, if you're interested in my bona fides, I have 3 years of Perl
experience, from commodity programming, to systems administration, to
database work, to web development. I have a bit of experience with Windows
administration in Perl, but I'll be the first to admit that it isn't my
strong suit. I'm a bit rusty in one or two areas, but I'll brush up on them
before we get to them.
Good luck, and if you're interested, I hope to see you there.
Alan Shields
|