When Larry Wall and others started hacking on Perl 5 (which was a complete rewrite and complete re-design of the defunct perl4), they expected it to be used for system administration tasks, for text processing and maybe to automate a few network tasks. The Internet Boom wanted otherwise, and several other technological explosions saw in Perl a suitable language for its tasks. Nowadays, Perl (and similar languages such as Python, PHP, Ruby or Tcl) are used for tasks as diverse as the computer world itself. Server-side- scripting, Bio-informatics, System Administration, Text Processing, System Tools, Graphical User-Interface, Computational Programming, Quality Assurance, automating Internet services (for good or worse) and even real-world applications and Games, are all written in Perl, Python and everything else. Some Killer apps of this kind include: Slash (the back-end of Slashdot), SourceForge/GForge, Bugzilla, Zope, PySol, The Mandrake Linux System Tools and Installer, Frozen Bubble (;-)), SpamAssassin, and many other things I don’t recall or forgot about momentarily. Furthermore, a lot of code of such languages is used internally and not exposed to the world, and plays a large role behind the scenes.
They are still often referred to as “scripting languages”, but this term can no longer accurately describe them. While a Java-obsessed friend of mine asked me to give him an example for a proprietary application of a large codebase that is written in Perl, and I could only think of open-source ones, it is definitely enterprise ready, and not a toy language for hackers any more.
Now, let’s go back to Mel. She needs to learn Perl. But she might as well have been told to learn PHP, Python, Visual Basic or whatever. My problem is I think she would have a much harder time with Perl than with the others. No, it’s not because Perl is a harder language than the others. I don’t think it is. It’s because the resources available online are inadequate or may scare her. And as Casey West noted in a previous attempt at correcting the situation, the Perl community is relatively hostile to newbies and does not put up with them as much as those that are friendly would hope.
Here is what I think are the problems with it:
I did my best to help newbies welcome in Perl. I actually like beginners, and have a lot of patience to them, because I know no one is born with an innate knowledge of Perl, UNIX or whatever. I often work in the Technion farms and whenever I overhear that someone has a problem my ears become pointed, and I cry “do you need help?” And then show him how to do something that for me may be perfectly obvious. Seriously. I simply enjoy doing that.
I also took some proactive effort in the direction. I wrote the Perl for Perl Newbies lecture series for the Haifa Linux Club. I wrote them with absolute beginners in mind, and decided to teach a very small subset of Perl step by step, with assumption that people will read the man pages afterwards. (and be able to understand them better then).
Lately, out of frustration with the learn.perl.org site, I started working on my own version of a Perl beginners site. Now here is where things went a bit wrong in my opinion. However, I don’t want to defame anyone so I’ll summarize. Both the use.perl.org’s editor and a very prominent Perl figure that stumbled upon the site, believed that I should merge my work with learn.perl.org. At first, I thought it was a good idea, but then discover I am unable to contact the learn.perl.org workers and that their mailing lists was closed for subscription.
Regardless, what’s wrong with two Perl beginners site on the Internet? If I feel that learn.perl.org is inadequate, why should my effort be frowned upon? If we take PHP or Visual Basic for example, than everyone and his mother have a PHP portal where users can post questions (sometimes without subscribing), receive answers, read tutorials and see code snippets. Same for Visual Basic, despite the fact that it is proprietary. I want the same for Perl! I don’t want a couple of concentrated perl.org and perl.com and oreillynet.com sites. I want a real network of independent sites!
It also demonstrates the Perl community’s elitism. I don’t know how it came into being. For example, when I log into EF-Net, the channel #perl displays a long title that reads something like: “Not a Helpdesk! No CGI/WWW/Net::IRC/FAQ.”. OK, there’s also #perlhelp where such questions are accepted. But here are two facts from a user interface designer point of view:
People are not going to read the title. In a user interface, you are lucky if people read anything at all. (including: “Delete and Expunge ‘My most important work’?”)
Newbies by nature will try #perl if they log into a random IRC server. And they don’t want to get flamed for being off-topic there.
In short, this is a bad UI design. If the Perl gurus so desire not to be disturbed by newbie questions, they should move to #perlgurus or #perlelite or #perlcafe or whatever. But they should not make claim for #perl.
In another IRC network, I (not a newbie by far) was kicked because I pasted a URL and said the word CGI. (there’s a nasty pattern bot there). Some other time, I was kicked out of #perlhelp, because I said the built-in function hex() converts numbers from hexadecimal to decimal, while a moderator believed it converts them to hexadecimal. Naturally I was right (Run perldoc -f hex), but still instead of arguing with me, he kicked me out. Why should a bit of disinformation hurt if there are enough good people to correct it on the IRC as well? And Newbies can learn a lot from such discussions.