I sometimes wonder why I love so much Perl. I feel like some empathy for Perl. Like a good tool that you are attached to.
I once wondered myself what was rational and what was emotional...
Perl being not my first programming language, I know that Perl has real virtues that make me feel good and stick with it, but what are these ?
The Perl killer features detailed below are not always only Perl specifics, good ideas are often shared, but when I tried to list what I enjoy with Perl, this is the items I found.
The parser is incredibly smart, giving the user the true power instead forcing developer to adapt himself to the parser.
This is the "Alexandria library" for coders, giving you free and reusable high quality modules for almost every tasks.
I insist on "high quality"... because it is, really.
A major Perl programmer said : "CPAN is the language, Perl is just the syntax"
Perl coders are very respectful towards existing tools and ecosystem in general. This is something very important, for me, in the today's world, and every non-junior programmer should agree with me.
This virtue eventually leads to improve existing pieces of software and incrementally grow "things that works" without bursting our ecosystem into a myriad of tiny pieces.
And these previous qualities are something that gives an overall feeling of wisdom.
Perl folks are also funny, doing coding challenges or playing with software computing weirdnesses.
This is probably the most impressive part of Perl, the Perl toolchain were and still is more than awesome !
Should I remind that Perl is ultra portable and stable ? Of course no :D
Perl has great build system that have stages prerequisites, dynamic configuration, isolated installation, external dependencies and versions range constraints (against parser, build system itself or other modules !).
Everything in a ecosystem that :
- helps developers to create reliable and portable modules
- guarantees the best quality to users
And despite the full freedom given to Perl developers (TIMTOWTDI), it is remarkably well harmonized on top of it.
This is a direct consequence of the "respecting constraints" community value that I discussed earlier.
This is a masterpiece providing one of the best web framework between all languages plus a general purpose programming framework.
No need to introduce regular expression and their strong roots interlaced with Perl.
This is something that always impressed me, Perl folks are doing tests for real.
Not that it surprises me to test programs, but really it's deep in the Perl DNA.
During module installation, after CPAN upload, on various platform and parser versions.
Anonymous individuals are testing for you, all the time, and the vast majority of modules has a lot of tests, it's crazy.
"Perl testing" is true business, not a buzzword.
Purely another masterpiece, invented when database interfaces were not even existing.
The way it is made is for me a model of software architecture.
When you run old code on recent machine or recent code on old parser, it's often lost in advance... with other languages !
For a lot of challengers, the recommendation is often to always run code almost isolated (all deps installed for each app with specific version) or environmentized (override interpreter and lib path).
It's is not Perl main approach (but we have also first class tools for it) and perl porters and modules owners try hard to make this happen.
Programming is sometimes dancing with a parser, the perl interpreter gives very smart messages and point often the exact place where you made this fu$!i%g typo.
No stackstrace, no cryptic error.
When you learn to program with Perl, you don't need the full "idiomatic" Perl skills but you can easily do "baby Perl" because of the expressiveness of Perl and his "least astonishment" principle.
And this virtue is still a pleasure for experienced Perl programmers.
I already mentionned Mojolicious but there are web framework alternatives that are as good as it.
Perl has also one of the best "network toolbox" to achieve all network related tasks like scraping, crawling, pentesting, crypto, ssl, snmp, ftp, sftp, ssh or whatever you could need.
It is not really a quality but I always loved that Perl smells so "Unix". It also have a sort of reputation of "hacker language" and I find it cool.
Perl has such a free culture that... we even forgot about this quality. Perl programmers are and have always been sharing code. This is just great and very important to me.
This was my testimonial about why I love Perl.
There would be much more to add but I think I already discussed some topics that are really Perl "killer features" for me but not being the ones that are usually highlighted.
And now what about you, why do you love Perl ?