Why should I use Perl instead of Ruby/Python/etc? [closed]
I love Ruby and have been using it for a few years to handle day-to-day scripting tasks. Lately however, I've had a number of people tell me that Perl is where it's at. I have nothing aga开发者_开发百科inst Perl, but it seems like it's kind of fallen behind the times a bit.
However, that's probably just my perception, so I'm asking all of you, what makes Perl so great? I'm genuinely seeking information here; I'd like to understand why this language has such ardent followers.
I know a good handful of hackers who left Perl to go to Ruby. Python is obviously a nice language too. I am neither saying nor implying anything against either.
Pros for Perl 5
- Since about 2005 or so Perl has been in a fairly dramatic renaissance in both CPAN and core releases. Perl 6 has helped drive this by sending concepts like role-oriented OO back. Strawberry Perl has made Perl hacking on Windows more like *nix.
- The CPAN is huge, still growing, and most of the more widely used authors/teams are responsive to bugfixes. Most popular Perl modules are tested widely and well. CPAN testers recently sent their 10 millionth test report.
- Many of the big kits have good communities associated where expert help is available quickly.
- The tool chain has become very flexible.
- The combination of perlbrew, local::lib, and cpanminus lets users (even without root) have an arbitrary number of perl versions and libraries accessible on the same box.
- Many of things that Java, Ruby, Python do right come back to Perl and with facility. For example–
- KinoSearch is Lucene but even faster by some benchmarks.
- Catalyst is Rails but more flexible. It’s a completely agnostic C with regards to the M and V.
- Plack is Python’s WSGI + Ruby’s Rack.
- It’s as fast and personal or readable and robust as you want it to be.
- A short one-liner can edit every HTML file in your tree when you’re in a hurry to fix something.
- A clear and robust program with error reporting, logging, and feedback built on any of the 6 or 7 suitable HTML/XML packages could do the same for a client.
- Perlmonks. Though there are notable exceptions, the Perl community is generally friendly, helpful, and positive.
- There are quite a few good Perl jobs waiting to be filled. The back and forth between the high level languages has left oodles of Perl in the wild without a matching crop of Perl-centric devs. (I get 5-7 cold calls from recruiters a year.)
- It’s fun. In quotes: “Perl has the happiest users.” I can’t speak to the scientific nature of that but I can say I only program today because Perl exists. Many other Perl hackers share this stupid giddiness for the language.
Keep in mind it’s not a zero sum game. The more languages you can wield, the better.
If I had to name one great strength of Perl, it's one word: CPAN.
Having worked with Ruby as well, I'd not say that Perl is necessarily better or worse, but definitely more mature. It is, after all, much older. However, it's not decrepit. It has plenty of modern stuff, e.g., Moose and the 5.10 and 5.12 updates have fixed a lot of problems that the ancient 5.0.x had.
(And if you're wondering: Perl 5 and Perl 6 are different languages. The similar name is an unfortunate mistake. Though Perl 5 does borrow ideas from Perl 6 and vice versa.)
CPAN.
The syntax of Perl is sometimes painful to look at but it is available on Unix machines everywhere and with the command line access to the huge number of packages in CPAN (which can also be accessed via browser), Perl is the de facto standard because of its broad applicability and availability.
These days, IMO the main reason to use Perl is that you can be pretty confident that just about any UNIX system will have it available, even on the sparser commercial UNIX distros.
Also, it has some features that make it work very conveniently with the UNIX shell and filesystem. Perl one-liners are convenient in shell scripting when you need a little more power.
If you're not on a UNIX machine then there's probably little advantage over more modern scripting languages.
First of all I love Python and Ruby as well. In fact I think anything you can do in anyone of the 3 languages you can do in the other just as easily.
CPAN however is a big advantage. There are not many times I find myself looking for a specific general functionality and not finding a module for it. The greatest thing for me is however is that I can do absolutely everything I want, quickly, and in 10 different ways if I like, but maybe that's just because Perl is my 'mother tongue'.
Anyway, I think it depends on what you want to do. If you want to create a scalable website or web application with all the plumbing (authentication, authorization, session tracking, database ORM, etc, etc) taken care of, it can be done in Perl, but the hassle is not worth it. Go with Python (Django) or Ruby (Rails 3.0 rocks) then.
Good luck and watch out fire setting of flamewars with this subject, this kind of stuff get seriously get you hurt ;)
Rob
精彩评论