Live data from Hacker News

Modern Perl: The Book: The (draft) PDF

modernperlbooks.com

11–20 of 50 posts

Re: Modern Perl: The Book: The (draft) PDF

#11

Earlier quoted context omitted.

Well, if you are advanced with Ruby then you're probably set. However, Perl is still an excellent language for building scalable web systems in no time. With 'Modern Perl' you get 'Ruby on Rails' style of programming in Perl, and with Perl you get the tons of libraries in CPAN. I wouldn't recommend learning Perl if you already know Ruby. For the same reason I wouldn't learn Python or Ruby because I know Perl. I'd lea…

With 'Modern Perl' you get 'Ruby on Rails' style of programming in Perl What exactly does that mean? Optional parenthesis on method invocations? Considerable use of convention over configuration? Built-in object mapping to database schemas?

Optional parenthesis on method invocations? Yes, but that comes with Perl. (I don't find that even remotely useful. I like to know if a variable is calling a method or a member simply by looking at the code.)

Considerable use of convention over configuration? Not sure what you mean here.

Built-in object mapping to database schemas? Yes.

I'm also referring to the clean MVC/OO style project architecture.

Here's how I described it in another thread:

With modern Perl, code is usually clean and free of crazy syntax. With a OO architecture where the base classes do most of the work (such as auto authentication, auto encoding/decoding, auto DB joins, etc.) and you do business/game logic in the upper modules.

Re: Modern Perl: The Book: The (draft) PDF

#12
I've been working with Perl on and off since 1997 and similar to many I've been disgusted by some of the code I've come across created during that time. Perl has come a long way even since version 5.0.0 and is quite a different character these days. The problem I've had with recommending the language is that unlike C which really hasn't changed(at least to me), Perl has slowly evolved but many of the books in print still point to the older version. While Perl is excellent in maintaining backward-compatibility with earlier versions, knowing and learning the "modern" versions has been a more painful task then it should be. I think this book changes that.

I just spent about 30 minutes skimming through it. It's only 260 pages in clear and articulate English. Should this be THE new Perl book? Could be...I think this coupled with Effective Perl Programming that came out a few months ago are great for getting onboard or returning to the world of Perl. Hats off to you Chromatic for your work on this.

There may not be any reasons to learn Perl if you already know Ruby/Python/Tcl/Lua but you certainly won't be worse for it if you do. At the end of the day, it's just another tool and I love having access to so many great ones these days.

Re: Modern Perl: The Book: The (draft) PDF

#13
I took a six month break from Perl. I know it better than any other language.

I recently started using it again for one offs. I love Perl. It is so much fun to be totally fluent in a language.

Then I wrote a one page app in it. Oh my god, I can't believe anyone still uses Perl.

Its strange. I love it. I hate it. Its great. Its a piece of shit. I am familiar with Modern Perl practices... I just can't understand why anyone without a massive legacy codebase bothers.

Re: Modern Perl: The Book: The (draft) PDF

#14
This looks interesting and I'm always happy to see good documentation appear, even if for a language I rarely use. My one suggestion would be a PDF typeset for on-screen reference. The font size is very hard to read at "best fit" on a 1152px high screen, even when maximized. If you wanted to match the print page numbers, you could cut down the margins on the electronic version.

Re: Modern Perl: The Book: The (draft) PDF

#15
post #2

Ok, I am a solid PHP developer, pretty advanced with Ruby, and can do front end code and JQuery with my eyes closed. Should I be interested in Perl? Is there any reason to learn it if I know these other languages? I am genuinely curious

My recommendation as a (mostly) Perl programmer is, learn AWK first if you are not familiar with it. If your line of work is mostly website development, it's probably better to stick with PHP and Ruby in my opinion.

Maybe look around CPAN a bit, see if you find any libraries that you think might be useful, and are not available on PHP or Ruby.

Re: Modern Perl: The Book: The (draft) PDF

#16

This looks interesting and I'm always happy to see good documentation appear, even if for a language I rarely use. My one suggestion would be a PDF typeset for on-screen reference. The font size is very hard to read at "best fit" on a 1152px high screen, even when maximized. If you wanted to match the print page numbers, you could cut down the margins on the electronic version.

I thought about that earlier today. This PDF will become the printed version, but I can render a version for letter-sized paper and another for A4. If I had a good sense of what's most readable on screen, I'd do that too (though the epub version is easiest). There's no strict need to keep the page numbers identical across versions.

Re: Modern Perl: The Book: The (draft) PDF

#17
post #13

I took a six month break from Perl. I know it better than any other language. I recently started using it again for one offs. I love Perl. It is so much fun to be totally fluent in a language. Then I wrote a one page app in it. Oh my god, I can't believe anyone still uses Perl. Its strange. I love it. I hate it. Its great. Its a piece of shit. I am familiar with Modern Perl practices... I just can't understand why an…

I just can't understand why anyone without a massive legacy codebase bothers.

With modern Perl 5, some CPAN modules, and a little bit of discipline, I can write a thousand line application to the delight of my client without the language, the libraries, or the tools ever getting in my way. I can't say that of any other language.

Re: Modern Perl: The Book: The (draft) PDF

#18
post #13

I took a six month break from Perl. I know it better than any other language. I recently started using it again for one offs. I love Perl. It is so much fun to be totally fluent in a language. Then I wrote a one page app in it. Oh my god, I can't believe anyone still uses Perl. Its strange. I love it. I hate it. Its great. Its a piece of shit. I am familiar with Modern Perl practices... I just can't understand why an…

My experience is the opposite. I've used Perl for one-page web apps. I've used Perl for one-hundred-page web apps. I've used Perl for HTTP load testing. I've used Perl for high performance messaging. I've used Perl for writing desktop apps.

Every time I do it, I finish and say, "this is great". The code is easy to read. The code is easy to extend. The code is easy to test. The code is easy to deploy. And I had fun making it. And it's fast. For stitching together complex apps that need to interact with the outside world and not randomly die, Perl is the best tool there is.

Incidentally, people tend to think the opposite -- Perl is for text munging oneoffs, not for complex apps. This isn't my experience, though. Perl is great for gluing things together, but it's not the best tool for performing compute-heavy work on data.

Situations where Perl has served me well: "Produce a CSV file from this data derived from a web page and this database and this C-based analytics library." "Open up as many HTTP connections to this server as possible." "Accept connections from 30,000 clients, and send them a JSON message when a certain event occurs." "Allow someone to interactively edit a complex data structure on the web." "Send a message to server a, poll server b until the message comes back, and report the latency to a monitoring tool over XMLRPC, and write the result to a database." etc.

These worked well because of the great tools I have available in Perl. Moose, with MooseX and roles, to keep my code organized. Bread::Board for making it easy to wire components together, without sacrificing modularity. 100s of Test:: modules to make it easy to exercise all my code ("unit" and "integration" are both really easy with Perl). EV for high-performance IO. Coro for making the async-IO code look "normal". AnyEvent for writing modules that do async IO, without requiring the author to make a decision about which event loop to use. Plack for making all my web apps look the same to the server. Tatsumaki for making streaming easy. Catalyst for making big apps easy. DBIx::Class for making complicated database queries easy. KiokuDB for making my in-memory data persistent.

Situations where Perl has not served me well: "Write a language independent API that adds a tiny bit of business logic over a network protocol." "Load data via a proprietary and buggy C-based library, do complex transformation and normalization, and write the fixed data to a new file."

Why did Perl fail? In the first case, because there is a mental hangup of linking Python or Java with -lperl, even though it's easy to write the C to expose Perl modules to *. It's easier to write your simple "value-add" in C, because then everyone can use it and they feel like they are not making any political decision. And it turns out that C is not that difficult if you are willing to think like a defensive programmer when programming in it!

In the second case, Perl was slow. Writing an XS binding is straightforward, but not trivial. Creating objects, something you need to have at least somewhat-organized code, billions of times is... pricey. Doing a lot of work on a lot of data just isn't very fast. So I use Haskell for this type of work instead. It's trivial to write a binding to a C library (you can do it interactively with ghci and :load, no compilation necessary!), and you can write an expressive, maintainable, abstract program to operate on your data without sacrificing any runtime speed.

In conclusion, you might be doing it wrong. Or you might have picked a bunch of tasks that Perl is bad at and not stopped to notice how good it is at everything else.

Re: Modern Perl: The Book: The (draft) PDF

#20
Glad to see the book - and it looks a good read. Perl really has evolved as a language & community over the last few years and it's still my go-to language for my own projects. Despite having been mostly Python/PHP on the dev side the last couple of years - and being a huge Ruby fan.

The core of the language still has some warts - but there's still some interesting stuff to play with.

Three reasons to have a look at the language if you haven't before (or take another look if you've been away from perl for a few years):

* Moose - http://moose.perl.org - is becoming the de facto OO layer on top of Perl's basic OO system. It has some interesting features that you don't see in most other OO languages (Roles for example.)

* CPAN - http://search.cpan.org - the library of perl modules. Interesting for a couple of reasons. First it's scope is amazing. When I need to talk to some weird API there's usually something there to help. Cuts development time enormously. Second - the infrastructure of CPAN itself is fascinating. The way that things like http://cpantesters.org, http://search.cpan.org, the standard methods for building libaries and modules, etc. all work together is an interesting software ecology. Worthy of study. Lessons to be learned there for gems et al.

* Testing. The testing infrastructure in perl is _amazing_. It's the best I've used in any language. That's because it's evolved around a language/framework agnostic testing protocol TAP (http://en.wikipedia.org/wiki/Test_Anything_Protocol) that allows many different styles of testing to co-exist in the same test running framework. Really nice stuff.

Post reply on HN