Divan has asked for the wisdom of the Perl Monks concerning the following question:

I'm a primarilly a .NET/js/DB developer but I know a little bit of Perl (learned the basics as my first programming language).

I've just recieved a small project in Perl 5.10+ and that sparkled my interest in Perl again. I've decided to master it alongside with Linux (debian based) which I use ocasianlly.

I've assembled a reading list of, what should be, the best books on Perl.

Now, I'm interested in service oriented programming, SOA, and since I have experience with WCF, I'm looking for something "similar" in Perl.

I was looking at Kensho::Task and saw POE and IO::Async for async programming. I also saw Mojolicious, Dancer, Catalyst and now I'm wondering where to start, what is preffered in the community etc.(I know that these things have different purposes)

Should I first learn the low level stuff (fork, socket programming) and then middlewares, before diving into high level stuff or just start at the top ?

Thanks in advance.

Replies are listed 'Best First'.
Re: WCF alternative in Perl
by Corion (Patriarch) on May 31, 2015 at 07:02 UTC

    Personally, I would postpone learning about fork and lower level socket programming. They are necessary to learn about but you better learn about them once you have a situation that requires you to instead of learning about them now and never getting to something that produces results.

    I would avoid POE and IO::Async for the same reason - unless you have a situation that requires you to use a state machine or callback based approach for concurrency, knowing about them serves little purpose.

    If you want to write servers or middleware for SOA (which I presume includes the buzzwords REST or Microservice, nowadays), I would look at Dancer or Mojolicious for getting a quick start. They both can act as stand-alone servers but can both leverage Plack/PSGI to use other webservers. If your application ever outgrows what these frameworks provide, Catalyst gives you an environment that needs far more up-front setup but supposedly provides much more structure. Personally, my applications never reached the complexity that might warrant using Catalyst.

      I believe that most (if not all) of the Dancer developers are now working on Dancer2. Also, it looks like http://perldancer.org/ is starting to reference Dancer2 instead of Dancer in it's documentation. Considering all of that, would it be better to recommend new folks to look into (or use) Dancer2 instead of Dancer at this point?

        In my opinion, Dancer2 is very much still under development, so I don't consider it as good for a learning experience. But depending on how adventurous Divan is, Dancer2 might still be an option.