20

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?
9
  • 9
    That's not true at all @MattH. Perl definitely has it's own idioms that are preferred over other ways of doing things. Just because there are multiple ways to attack the same problem doesn't mean that one of them isn't more Perlish than the others. Commented Mar 25, 2010 at 14:20
  • 4
    All the pigs in Perl are equal... but some are more equal than others :) Commented Mar 25, 2010 at 14:50
  • 1
    @DVK nooooooo!!! All animals are equal. Some (i.e. the pigs) are more equal. youtube.com/watch?v=NZldlyeR8DU&feature=fvw Commented Mar 25, 2010 at 16:41
  • 3
    @Sinan - heh. My version's more idiomatic Perl than Orwell's :) Commented Mar 25, 2010 at 16:50
  • 2
    There's a reason people are moving away from Perl. It's an atrocity of a language. Spend an hour or two to learn it well enough for quick commandline hacks (perl -ne 's/a/b/; print;')--it's better than sed and awk for that. Any more is nothing but brain pollution. Commented Mar 26, 2010 at 7:36

6 Answers 6

18

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.

Sign up to request clarification or add additional context in comments.

3 Comments

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.)
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. :)
Perl is also very good at multi-line lambdas, Python has to use one-liners there.
15

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.

Comments

11

3 Comments

Develop using Moose, deploy with Mouse and Any::Moose
@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).
@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.
4

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.

Comments

4

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)

1 Comment

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".
3

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 :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.