tags:

views:

394

answers:

6

I know Python (and a bunch of other languages) and I think it might be nice to learn Perl, even if it seems that most of the people is doing it the other way around.

My main concern is not about the language itself (I think that part is always easy), but about learning the Perlish (as contrasted with Pythonic) way of doing things; because I don't think it'll be worth the effort if I end up programming Python in Perl.

So my questions are basically two:

  • Are there many problems/application areas where it's actually more convenient to use Perl rather than Python?
  • If the first question is positive, where can I found a good place to get started and learn best practices that is not oriented to beginners?
+10  A: 

One area where Perl is more "convenient" is using it for one liners. Python can be used to produced one liners, but often its "clunky" (or ugly). Note that Perl is renowned for its "terseness" or "short and concise", often at the expense of readability. So coming from Python, you have to learn to get used to it.

Another area is Perl's vast number of modules in CPAN. The equivalent of that is Pypi but its modules are not as many as CPAN.

that said, both do similar things and both have their own merits.

As for your second question, you can look at Perl documentation. I find it very useful. Especially also read the Perl FAQ. They are the best resource for myself if I want to learn about Perl.

ghostdog74
nice FAQ, I'll give it a good read! :-D
fortran
Specifically, have a look at `perldoc perlstyle` and look at the chapter in the Camel book on writing idiomatic perl (statements like `next if $xyz;` are very Perl-y and idiomatic.)
fennec
Perl's FAQ is absolutely huge. Half the perl language specific questions on SO could probably be answered simply by just looking at the FAQ. :)
Robert P
Perl is also very good at multi-line lambdas, Python has to use one-liners there.
MkV
+4  A: 

I think Learning Perl from O'Reilly Media is a pretty good way to get started with Perl, even if you are already proficient in Python.

Especialy if you want to get to know the one-liner stuff (and this is what Perl is REALLY good at)

Powertieke
LP is a great book to get started with even if you are an experienced programmer. It's very well written and not painful to skim to "get to the good bits".
daotoad
+10  A: 

For best practices, check out Perl Best Practices by Damian Conway. Not all of the recommended practices make sense, but most of them do.

The Perl::Critic module also helps with best practices.

Also, check out the Modern Perl Books blog.

If you have questions, Perlmonks is the best web forum to get help. There are a large number of very knowledgeable, friendly people who can, and will, answer your questions and discuss the merits of different approaches.

daotoad
perlmonks is wonderful.
intuited
+8  A: 

/I3az/

draegtun
Develop using Moose, deploy with Mouse and Any::Moose
MkV
There is also http://search.cpan.org/dist/Aspect if you want to do AOP.
MkV
@james2vegas: I've never used Mouse or Any::Moose. I always just stick to Moose with no issues thus far. NB. For other readers of this comment... Mouse is a lightweight Moose by excluding the Meta Object Protocol (Class::MOP).
draegtun
@james2vegas: re: Aspect / AOP - Yes I believe this is a full on AOP implementation in Perl. Whereas I think Moose more embraces (bits of) AOP rather than enforcing it.
draegtun
+2  A: 

Effective Perl Programming is mostly for people who know the basics of Perl's syntax but need to learn the idioms. We also cover similar stuff in our Effective Perler blog :)

brian d foy
+2  A: 

Impatient Perl

One of my favorite books for people who want to learn it and then get stuff done is Impatient Perl by Greg London, a free netbook available from perl.org. If you're a programmer, know scripting, know the concepts behind dynamic languages, and just want to know how perl does it, this is a great starting resource.

Robert P