

How to Learn Perl - AbyCodes
http://www.modernperlbooks.com/mt/2011/09/how-to-learn-perl.html

======
gatlin
I use Perl almost exclusively. CPAN is my one word argument. Aside from that,
though, Perl can become whatever you make it. Want Ruby-like method calls on
literals? Use autobox. Want list comprehensions? Map/grep. Want to rip apart
language built-ins at runtime, tie data sources to filehandles, or just use it
for one-liner awk replacement? Done.

Python and Ruby are sexy but they both feel like subsets of Perl to me.

------
vtail
An honest question: are there any reasons to learn Perl these days (as opposed
to Ruby/Python/name your favorite scripting language)? Some people need to
maintain existing Perl codebases for sure, but they should know Perl already?

~~~
jbert
It's an interesting question.

I would hazard a guess (with nothing really to back me up other than a quick
google search and my memory of the data I have seen presented on this subject
in the past) that perl has a slight performance edge (cpu and memory) over
python and more so over ruby. That isn't a great argument though, since they
are all in roughly the same performance class.

I think the main difference between those three languages is cultural, rather
than technical.

So to answer your question I guess I'd say: "Because you find the perl culture
and community (and it's technical mores - such as it's approach to testing,
documentation) more to your taste than the other languages". Basically if you
prefer "TIMTOWTDI" to "pythonic".

But practically speaking, given the similarity between them, I'd guess you're
likely to stick with the first of those you learn thoroughly, unless you
change job or are swayed by "Perl is dead!/Perl is ugly!", "Ruby is
slow!/Monkey patching is evil!" or "Whitespace-sensitivity is bad!/Broken
lexical scoping is broken!" or whatever other clarion call washes through
various blogs.

Personally, I really like the partial static checking perl does with strict
mode on and I feel a little horrified that python doesn't provide that safety
net (I don't know if Ruby does).

~~~
danssig
I'm not sure there's even a slight edge in performance these days and even if
there were, you have more options with Ruby/Python (e.g. IronRuby/IronPython
for the JVM, etc.).

~~~
jbert
One data pt - micro benchmark on the default versions of perl/python/ruby on
ubuntu 11.04. Sum the numbers up to 10,000,000 using a straight while loop.
Run several times on idle system, took representative value. Runtime includes
startup time.

I _know_ this is a dumb benchmark, but I think it backs up my general pt about
performance above. (JVM/CLR implementations are interesting - are they widely
used?)

    
    
        python2.7.1: 2.0s
        perl5.10.1: 1.3s
        ruby1.8.7: 4.3s
    

python code below (perl+ruby are direct transliterations. Yes, there may be a
more idiomatic way to write it in all languages, I'm trying to do a very
simple apples-to-apples comparison of each languages dominant production VM
implementation):

    
    
        total = 0
        i = 10000000
        while (i > 0):
            total += i
            i -= 1
        print "total is ", total

~~~
danssig
I meant to say "in _general_ performance", i.e. of a complete application.
Micro benchmarks mean less than nothing in that case.

Python is obviously plenty fast: Blender (3D modeling application) is written
in it. There is also Twisted and all that other stuff.

>are they widely used?

My impression is that they are. The JVM is everywhere these days.

~~~
jbert
> I meant to say "in general performance", i.e. of a complete application.
> Micro benchmarks mean less than nothing in that case.

Could you give me some info on why you think there isn't a performance edge
"these days"?

Or are you making the point that all these languages are "fast enough" and so
a perf difference between them isn't important for real-world use?

> Blender (3D modeling application) is written in it.

I'm surprised that the performance-critical parts are in python. Do you know
if the rendering etc is in python or is it at python UI on a C core?

~~~
danssig
>Or are you making the point that all these languages are "fast enough" and so
a perf difference between them isn't important for real-world use?

I'm saying perl might be faster at some loop that adds 1s together, but ruby
might be faster at networking and python might be faster at method calls, etc.
When you weight it all together it equals out.

In other words, if you wrote a big enterprise trading application in all 3
languages (i.e. write it 3 times with the best practices of each language) and
then only looked at charts showing various performance benchmarking results of
the application I think you'd find all 3 very close in performance.

>Do you know if the rendering etc is in python or is it at python UI on a C
core?

I thought it was last time I looked but I'm not certain.

