Hacker News new | past | comments | ask | show | jobs | submit login

Let me tell you why learning Perl is important. You will never realize why Perl is important unless you start using Perl to solve the problems it was designed to solve.

The whole thing really is Perl doesn't have any real competition. And it has always been the case. And even the competing languages more or less end up largely looking like Perl. The biggest examples are ruby and Perl 6 itself. Python is not Perl's competitor. It took me a lot of time to understand this. Python is really for bored Java programmers, who are in some desperate need of dynamic power. And its great in that area. The language is readable, quickly learn able but what beyond that?

Unfortunately the problem with Perl is something similar to that of Unix utilities, unless someone shows you how to do magic with them. You never truly understand why and what purpose they serve. You can read as many man pages as you want, and think about a million use cases. But unless you see the next bearded sysadmin down your cubicle do a computation task in a combination of 6 text processing utilities sewing them with pipes, what other wise your Java programmer would have take six months to write- You will never truly appreciate the beauty of it. That's the reason why awk/sed/cut/tr/Perl et al have never gone away and probably never will.

I have seen Java programmers even wonder what 'Text processing' is, and found it strange that a regular expression can be anything more than 10 characters. The problem with most of those programming domains is most of them consume data in xmls or database records, where data is really reduced to a form where you don't have to do much to take it from there. That is why when you try understand why you must learn Perl from the perspective Java, you never get a reason. If you are learning any language from that Perspective, then all look the same. Because what else is there more to a language than decision statement, loops and ways of modularization?

Change this situation and that is when you see why languages like Perl are still alive and used all the time. Back in the 80's a person called Larry Wall faced a situation where he had to solve a problem where he needed to deal with a lot of adhoc text data, in many adhoc formats all needed to made sense of then sent through a traditional program and then made a report out of it. When he tried to solve it, he figured out he was using many unix text processing utilities and C programming language in shell scripts. He figured out that this made case for a separate programming language. When he sat down and put down some design in place he saw three details emerge out of it. Which are:

1. Manuplexity: Ability to manipulate things quickly. Like Text.

2. Whipiptitude: Ability to whip things up quickly.

3. Express yourself: To use principles of natural languages as applied to programming languages.

Finally there is a guiding principle: which really is Laziness, impatience and hubris.

If you really want to learn Perl, you should be reading books like Higher Order Perl. You should see tough text processing problems. You should see how you can rapidly prototype, even without the help of Modern IDE's which is rarity for most high level languages today. You should see how CPAN helps you avoid re inventing the wheel(s). You should see why things Moose and DBIx::Class are not there in other languages. You should see why the flexibility, extensibility leads to packages like Devel::Declare. You should see the testing culture.

Perl was born and raised among hackers, I mean the true bearded hackers. Who have experience of building things without reaching to the Google homepage every 30 seconds. If you have time, I would advice you to take some time out and read Tom Christiansen's essays back from those days. Take some time out to read JAPH and Golf contests from those days. You will see how much time those folks spent in doing the real hacker work, how many small succinct and yet extremely power solutions exist to so many problems you are likely to face everyday.

When you truly look at the use cases, you realize that Perl doesn't really have much competition in its stride. Even the languages designed to replace it look like Perl. Think of it like Greenspun's rule for Perl.

Even if you don't learn Perl I would definitely advice you to learn Unix utilities in quite some detail. That way you will realize and see a very different part of the world.

Thanks this was really useful. I use bash scripts, awk etc. fairly frequently but I guess rarely consider Perl for the same applications I do awk, perhaps I should.

Your comment really helped me understand where Perl should sit in my toolkit of programming languages, thanks again!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact