So, here's my take on these three languages: Perl is an accretion of very useful features glued together on top of a fairly elegant, nearly Lisp-like core. However, the accretive nature shows itself quite plainly; it's got 'awk'ward pieces and 'sed'iment littered throughout its syntax and semantics. It's full of quirks, corner cases, and ad-hoc design decisions that were created to make particular patterns of use very convenient. This all makes it a complex language that you can pick up the basics of very easily, but requires a lot of reading and conversing with arcane masters to explore all the nooks and crannies of. If you're not planning on using it frequently, it's probably not worth it, because you'll forget a lot of these details between uses. People who use it all the time tell me that they remember just fine; maybe it's just me. Anyway, the true raison d'etre of Perl is Unix system administration. Despite its flaws, and whether you love it or hate it, it nearly always wins at this one task. Sometimes it's because of the text manipulation tools, sometimes it's due to bindings or CPAN modules. If you don't care about Unix system administration, I would give it lower consideration.
Python was, at one point, my favorite language. I didn't have exposure to many languages at that time, but it was very easy for me to pick up and I was immediately able to create useful programs. It's a very clean language, and the way to do things is generally fairly obvious. I have a few nits to pick with it, but they're not serious flaws as far as I'm concerned. Also, anyone who tells you Python isn't really object oriented is probably using a different definition of 'object oriented' than you are. It's a very object-oriented language indeed, though some of the machinery is exposed (though not to the absurd extent of OO perl). It's very dynamic, flexible, and powerful. It's reasonably fast. It's got a fairly good set of libraries. I don't see any big reason not to choose Python. I don't have as much to say about Ruby, because I've never actually used it. I like it a lot conceptually, since it marries the Smalltalk object model with some Lispy sensibilities. However, you've already seen some of my concerns about the language and its current implementation. I also don't like the fact that blocks are relegated to the final argument position, and have some odd quirks compared to their Smalltalk counterparts. I think Ruby has the potential to be very fun, though; perhaps more so than Python, and far more so than Perl, which I can only hate because of the mess that it is. I will probably learn a bit of it myself, sometime, someday, if its current popularity trend holds. Those are my opinions; you'll have to decide for yourself which one you want to learn, since the languages I would suggest are not options you listed. --Levi /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */