views:

700

answers:

14

I got into Perl years ago and always found it a fun and expressive language to work with.

I found that programming in Perl makes me quite productive thanks to its low overhead and the outstanding amount of ready-made solutions to common problems on CPAN.

If you're new to Perl, what got you into it?

+3  A: 

simple syntax, powerful scripting capabilities for win32 and unix systems, and totally powerful regex!

I pickup Perl on my first job where I had to write plenty of automation script for electrical engineers to mine datalogs and format them to Excel and sometimes deal with sql server too. With Perl I could usually get something working rather quickly, so all is good in the manufacturing land. :P

melaos
Perl? Simple syntax? You've got to be joking.
Robert Gamble
It's no joke. Perl's syntax is very simple. You don't need to know everything in order to start using it.
Mr. Muskrat
But what you don't know will quickly bite you when you try to do something non-trivial. I've been programming in Perl for the better part of 10 years and the last word I would use to describe Perl's syntax is simple.
Robert Gamble
melaos
A: 

I'm not taking it up. I had to work on a project in Perl a few years ago, and I came to really dislike the language. It has a sometimes-awkward syntax and a lot of crazy gotchas that I found hard to work with. Honestly, I think Ruby has superseded Perl in many respects: it's good at roughly the same things, but has much nicer features and is easier to use.

Perl still has CPAN, though, which even Ruby can't match (although Ruby has a lot of useful libraries, too).

mipadi
I'm glad you found a language you like .. and realize when I read your post, that I must sound similar when I wax (not!) about Java .. guess it's time to re-install eclipse and reacquaint myself to >100 char lines and dotted runaway references spanning multiple lines ..
lexu
+17  A: 

I was coding PHP for a living, and then heard of their change from :: to \ as a name-space separator. I'm really not joking or being spiteful, but that is really what got the ball rolling.

Not to be elitist, but I suddenly realised that the people I had to collaborate with whom knew PHP understood very little in programming concepts in ways that frustrated me how they could be so blind, the people in the IRC rooms for it were no longer a source of help for my questions, and I usually spent more time answering questions and waiting for somebody to turn up whom could answer mine. Usually I ended up solving it myself. Most the time I realised was people re-solving the same problems over and over again in increasingly bad ways.

I discovered problematic behaviours in PHP which defied logic and reasoning (like the array_merge_recursive family), and discovered functions that were undocumented in how to use them, and when I reported a bug in the functions, my bug was marked as "Bogus" and I was expected to be psychic.

I had a friend whom was constantly proclaiming the goodness of Perl, so I basically gave it a shot and now am hooked like an addict.

Additionally, my experience in other higher-order dynamically typed languages (JavaScript and Ruby, yes, JavaScript is a more powerful language than PHP in terms of language features) left me a knowledge with many ways to solve types of problems easily, but being restricted in such a way I had no way to use these powerful features. Perl satisfied this need.

Why Perl and not Ruby? I've played with Ruby a bit, but my experience taught me the support and documentation is sparse, the language is slow and immature. Nice it may be, but its still in diminished in capacity against Perl from what I've seen. And it shared PHPs major flaw that it has a huge user base comprised of total novices all doing things the wrong way, and I really wanted to not have to deal with that so much.

It's not nice to be elitist, but once you have tried to explain the same thing to 30 people (and taken an hour to get a simple concept into their heads every time) it reaches a point of frustration. (I can't cope with the 'There is somebody on the internet who is wrong' situation, If I can't SEE it, it doesn't happen)

Kent Fredric
+1, totally agree with you regarding PHP and Ruby. The Perl honeymoon won't last forever but it is a mature, powerful language with a large knowledgeable community so you probably won't have the kinds of hurdles you had with PHP.
Robert Gamble
"when I reported a bug re the functions, my bug was marked as "Bogus" and I was expected to be psychic"A microcosm of the entire response, full of unsubstantiated insinuation
George Jempty
PHP has deviated from its Perl roots so much, that there is barely any resemblance.
Brad Gilbert
It's funny, Rasmus Lerdorf will tell you that PHP is not descended from Perl, but is too lazy to get off his ass and fix it in the manual (note: I had a discussion with him on /. about it)
R. Bemrose
+6  A: 

Perl is its community, which is the reason to use it both on a social and practical level. (See CPAN and Perlmonks, which likely inspired SO.)

J Cooper
No it didn't, as far as I know none of the people who worked on Stack Overflow, have had any experience in Perl.
Brad Gilbert
Oh, well, two different people independently discovered calculus, so I guess anything's possible :)
J Cooper
calculus was invented, not discovered
Steven A. Lowe
+4  A: 

I had used awk a few time for shell scripts way, way back in the days. In one ancient project we needed to implement the a TELNET protocol connection, so I wrote a quick version in Perl 4. It worked really well, and I started to really like the language.

Later, I wrote a big full commercial web application in Perl 5, complete with it's own framework and database. I was careful not to use to many of Perl's more esoteric features, so the code looked more like C than Perl. It worked really well, performance was good and the code was easily extended.

Recently I've been working in Java, but I often find myself missing the Perl's loose typing, and its ability to encapsulate things way better than Java. My favorite features were being able to put Perl datastructures (arrays and hashes) and code directly in config files and execute them, and the ability to tie code to syntax like arrays. Both lead to some really slick code.

Paul.

Paul W Homer
Interesting ... one of the things I'm wary of in Perl is lack of guaranteed encapsulation ... you can never be sure if some piece of code won't interfere with your own internal data.
reinierpost
Perl is great if you have self discipline. If not, or it's a large group of coders a stricter language is probably much better.
Paul W Homer
A: 

Perl is not as bad as I thought. I used to use it in a couple customer scripts about one year ago, and even grew to like it a bit. Then again, I've never ever missed it since.

The reason? It's mostly a write-only language. Going above a 100 line solution made me be wary of my own code, which is definately not a good outcome. With other languages that bar is considerably higher (maybe 1000 or 10000 lines).

I see no reason to go for Perl in new projects, for new users, in -soon- 2009.

akauppi
And what is your preferred alternative language - and how does it scale to 1,000 or 10,000 lines where Perl does not?
Jonathan Leffler
Perl is a write-only language, only if you don't know how to write readable code. Other languages force you to write "readable" code. So in other words; If you suck at programming use one of the other languages.
Brad Gilbert
I'm taking up Ruby as well but Perl has a more mature cross-platform ecosystem, especially with Activestate commercial support and excellent tools for packaging your code in .exe that works everywhere, including all the CPAN modules you need.AFAIK Ruby isn't there yet.
Renaud Bompuis
I still use Perl a lot but I am trying to find something to replace it for a number of reasons. I thought Ruby might be the ticket but after spending some considerable time with it I don't feel it is quite ready for prime time yet. I am delving into Python now, I really like what I see so far...
Robert Gamble
+7  A: 

I'm still not that long time in the Perl community and what me first brought in was Larry Wall's humor and wisdom. True, Perl has it quirks but the language comes from an understanding of things that is very close to mine so I'm much less comfortable with Python and to a lesser degree Ruby.

I don't do web app's more GUI with WxPerl and it works just fine. I'm very interested in languages also in lesser known like factor, boo, rebol and so on but all in all is Perl my choice. and it's because a mixture of powerful syntax (can be very functional if you like it), the community, CPAN of course, and, like I said before, due to the cosy feeling being in the right place.

sir_lichtkind
+11  A: 

I started doing Perl during my third year in computer science as a part of 'Scripting languages' course. I have a friend studying biotechnology and I helped her with some data mining scripts for dealing with protein databases (parsing text files, regexps, simple integrity checks). It was all very natural to do in Perl.

Then I got my first part-time job and had to use it professionally. I was responsible for developing set of batch scripts that handled some part of business logic in the company. And it was the task where Perl revealed all its potential. Need to get data from DB? - no problem, just go to CPAN. Need to automate wiki - no problem, go to CPAN. The amount of already created modules is overwhelming and you can be sure you will always find what you need in CPAN.

To sum up. For me, Perl is a swiss army knife of scripting languages. Everything can be done in it and it has huge number of additional modules even for very exotic tasks. And by the way, did I mention REGEXPS?

zarzych
s/knife/chainsaw/;
Brad Gilbert
+8  A: 

With Perl (and the expressive power behind TMTOWTDI), programming becomes a creative task. I can write if($expr) { $statement; } if I plan on having many else statements, or I can write $statement if $expr; if that makes more sense (for example, I'm fond of writing:

sub doSomething {
    my($toObject, $argument) = @_;

    die "No object specified" unless defined($toObject);
    die "Object invalid: $toObject" unless $toObject->ISA('Example');

    # Do stuff
}

but of course that's not always the easiest, and most expressive way of doing it; so I come up with a better way for the task at hand!). People complain because Perl lets you write horrible looking code; I love Perl because it lets me write code which looks pretty to me (and yes, I can see the downside of having a dozen different programmers writing in their own styles; I'll hold to the idea that good writers can be pretty expressive and understandable no matter how different the subject matter).

With other programming languages, I end up having to think my way through abstraction layers (how will this Map give me Collections whose Iterators I can use to ... and so on). With Perl, I'm usually only one abstraction level above basic Perl. For instance, DBI will give me database results as ordinary, everyday Perl scalars, lists and hashes, so everything I know about these simple, core data structures carries over to every task I put DBI to (Complicated data structures? That's what PostgreSQL is for!).

I've only been using Perl full-time for about a year, but these are the big wins for me, and the reason I first went full-time onto Perl after a year suffering at the hands of Java 1.4's Collections model (don't ask). Other programming languages make me feel like I'm putting together a jigsaw puzzle, as you line up all the modules and packages just right; Perl feels like a box full of Legos, with some "special" bricks (like DBI, CGI.pm and Test::*) thrown in for good measure. There are tons of different ways to solve any problem, and Perl lets you try any of them you like, in any way you like.

Gaurav
+6  A: 

There's a lot of freedom when coding in Perl; you can write some wicked-crazy unreadable hacks, but it doesn't take long once you've gotten a feel for the language (and learned how to use perltidy :-) ) before you realize that well-written perl code can look downright pretty.

It's interesting; I ended up as a full-time Perl programmer after learning it for my sysadmin-type job in college; and now it's my strongest skill. I'm going to stick with Perl for a while because so far the language has been versatile to grow with me. I write a lot of systems software in Perl, and decided to pick up web programming for fun, and Catalyst was there waiting for me. Do I want to try out a new language paradigm? Perl will probably support it. In contrast, when I was coding in PHP for a time, I immediately felt like I was pressing against a glass ceiling.

A: 

I considered learning Perl last year.

It was the only technologies that I actively decided not to learn. This is nothing directly against the language itself, it just seemed that I would be coming to the party 10 years too late. It is very useful for the shell scripting tasks that it was designed for but for me personally I prefer languages with a stronger coherence.

Perl 6 seems like it's on indefinite hiatus and even when it arrives I don't believe that it will make the language profoundly more compelling.

Also, Larry Wall scares me.

For my situation Perl wasn't the right choice and thats why.

Daniel X Moore
Perl 6 isn't on hiatus, it is under active development. You can find the best implementation at http://rakudo.org/ and more about the specification at http://perlcabal.org/syn/
Chas. Owens
+4  A: 

I work as a technological troubleshooter for a big organization in southern OH. I had to learn Perl to keep some automated network text manipulation systems up and running and eventually got a little excited about it. I eventually thought of myself as a developer and wrote some programs that parsed some database data and made some people’s lives a little easier. But after reading some of the posts on this website and listening to the stackoverflow podcast and even starting to read the book Code Complete from someone’s suggested reading list I no longer have any delusions that I was a developer of Perl or any other language for that matter. However, maybe someday I could be.

Akers
I know how you feel.
Copas
Eh, do realize that many, many developers out there don't do any of those things either. Joel has commented many times about how your average developer doesn't tend to read programming blogs or books on how to improve their craft.That being said, I don't call myself a developer either.
romandas
+1  A: 

What brought me to Perl was when I saw the DBI and realized that I could write the ESQL/C programs I was writing at the time in one fifth the time.

What has kept me using Perl is that the two other languages likely to unseat it are both strongly typed. That is

print "10" + 5;

is a type error rather than 15.

Chas. Owens
+1  A: 

I started using Perl as an enhancement to our build process for embedded development. We needed to develop diverse outputs based on our cross compiled payload and Perl was a great fit.

Our enhancements included floating-point to hexadecimal conversion, S-record post-processing, and checksum modifications.

Not that this kind of work can't be done with many other tools, but I would definitely recommend Perl for build-related work.

dls