I stand here today not to condemn Perl, but to defend it…
And when I say “Perl” I want you to feel free to substitute any other language you see fit… Visual Basic, Fortran, Lisp, COBOL, Smalltalk, or even… Java.
I was given a programming assignment this week. Given a list of 2000 names, I was to provide 400 names randomly. (Yes, this was for work, and was a real-world assignment, not just some exercise.) I proceeded to open my ~/scripts folder, which contains well over 1,000 Perl scripts, and grabbed some existing code, and wrote some new code, and ran a few tests, and quickly had the list of 400 names.
I used Perl because it worked for me. I probably could have written in it PHP (as it’s another language I am pretty comfortable with) but since I’m more familiar with Perl, and have done very similar thing before with Perl, and had a gigantic library (nearly 15 years worth) of Perl scripts to pull from… I used Perl.
I’m sure others could tell stories just like this substituting Java, or Python, or Erlang, or whatever they have around, that they are the most familiar with… and that’s fine.
This is about using the appropriate tool for the job, and this case, with the job being performed by me, the tool was Perl.
I wasn’t creating some new framework, or building upon an existing application, or pushing some code to GitHub that I wanted others to collaborate on… it was a quick ‘n dirty task that needed to get done as fast as possible.
Much of the programming world (maybe it’s mostly in the web-programming world) gets hung up on the latest and greatest. There’s a chance that using Ruby someone could have completed this task in half the time… but that person would not have been me, as I’ve spent probably less than an hour using Ruby and I’m not familiar enough with it to bang out the needed code quickly. I’d like to have some time to dig into Ruby (or, whatever, pick a language) and get familiar enough with it to use it effectively, but I don’t know when that will happen.
I’m not even a programmer… I’m a hacker, and I think Perl is a hacker’s language. Make something work. Solve a problem. Do it quickly, and move on.
To some degree you could say I’m trapped in Perl, because it is so easy for me to get what I want done quickly, and yeah, there’s a module for almost everything… Where I mainly feel the pain is when I look for example code and narrow my search to Perl (or PHP) because I’m most familiar with them. I needed some code this week to do some serial port communication, and found only one good example written in Perl. I should probably task myself with re-writing the code in Ruby, or Python, or some other language I’m not as comfortable with as an exercise in forced learning.
And then there’s a part of me that just says “screw it, I’m gonna work with what I know, and get things done, and move on.”
2 replies on “Defending Perl”
I had a very similar experience recently where I already had a Perl script written to do some processing on a MySQL database table that only needed slight modifications for this new task, so rather than writing something new, I imported all the data to MySQL, processed it with the slightly modified script and exported it again in less time than it would have taken for a more “appropriate” solution.
Also – long live Perl.
I agree with all the good points you make about Perl (or insert language here) and I use it myself for the majority of scripts that I write. I only venture into Python/Ruby when they have a specific library I need to use.
Unfortunately, it truly is a “write once, reuse never” in my case. As you said “Do it quickly, and move on.” After a week, it usually takes me less time to start from scratch than it does to try to figure out what my old perl script was doing and try to reuse it. Altho that may just say more about my poor programming skills than the language itself..