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