Programmer talking with his boss:
Programmer: "This code is awful, it really needs to be rewritten."
Boss: "Why? What's wrong with it? We don't have time to rewrite it, I promised we'd have it done by the end of the day."
Programmer: "It's written for PERL 4. It's a complete disaster area. It looks like it was some half-hacked Matt's script. Wait, the end of the day today?"
Boss: "Yeah, just make it work."
Programmer: ".... It won't be done today... I'll try to get it done for tomorrow."
Programmer walks off to try to hack new fields into existing script.
Boss calls client and says: "No, you can't have it today, it's written in PERL and it will take until Thursday to get it done."
Executive: "We need to get this site up and running ASAP. You have 8 weeks, get it done."
Web Developer: "We can do that. If this is the complete feature list, we can get it done no problem."
IT director, stunned at an answer of 'OK': "I don't think that's realistic. What are you going to build it on? We don't want an off the shelf CMS."
Web Developer: "It's not, there's a Perl based web framework called Catalyst that we can use that will make this easy."
IT Director (formerly Boss): "We are not building our new web site on PERL. I have dealt with PERL before, it's completely unmaintainable." To Executive: "We'll get back to you."
This last scene is probably familiar to you if you have proposed Perl as a solution to a software problem in recent years.
Perl is a forgiving language, especially compared to the languages commonly available for web development in the mid 90s, which is the reason it was chosen for those initial web projects. You could get started without the need for a full understanding of pointers and memory management. If you forgot to initialize something, the result was not a seg-fault or other failure. Perl required less discipline to get started with and was more tolerant of bad code.
The cowboys of the mid 90s cut their teeth on PERL forum postings and Matt's Script Archive. They have, unfortunately, left a legacy. That legacy is horrible, unmaintainable code. Many of those cowboys have gained real skill with development since then. More have simply migrated to other languages to write bad code. Unfortunately, the names of those cowboys are not visible every time that code is looked at, but in every one of those files, at the very top, is some variation of '/usr/local/bin/perl'
So Perl as a language gets the reputation for this pile of code left behind by the cowboys of the early Internet. Fortunately for those of us who develop in Perl, those days are over. The newer languages such as PHP and Ruby have taken over the 'newcomer to web development' slot as far as the buzz engine goes. So the cowboys of today are generating horrible unmaintainable code in other languages.
Because of its reputation as a dead language though, Perl lost its appeal as a buzz-worthy language. This reputation has cost Perl many new adopters and over time has boiled down the Perl community significantly.
Today, you don't code in Perl because you want blog cred. You code in Perl because you want to get things done. This is the reality of Perl development in 2009. There are a lot of people writing in Perl today who have come through it, who have been around the block and are long-since tired of re-creating the same solutions over and over. These programmers are the ones working in Perl today. They are the ones uploading modules to CPAN 400+ times per month.
These developers are people who are excited to do new things, who hate repeating themselves, and who want to do as much as possible in as short a time as possible. They don't want to waste time solving the same problem again. They want to create a module that is flexible enough to handle this problem the next time they encounter it, even if it is slightly different, or better yet, use someone else's module. They want to move on to the next interesting problem, they want to make their software more flexible so they can do more with less.
Projects such as Moose
are evidence of this new life of Perl. Perl is no longer a language of cut-and-paste unmaintainable line noise. Today's Perl is a language of great power in a small space. It is a language whose devotees are focused on getting things done, on exploring new concepts and better methods of doing things. Today's Perl developers have eschewed the NIH (Not Invented Here) build-it-yourself mentality in favor of a FAI (Find And Improve) mentality.
The result of all of this is a renaissance in the Perl community. A vitality which, though not new, is more pervasive, more lively and more externally visible. It is reinforcing that Perl is a language that is fun and exciting to work in; that Perl is a language where even those with years of programming experience can learn new things and where new things to all languages are being explored. Perl's reputation as a bad, dying language has long outlived its time. It's time we bring a new message about Perl to the world at large.