A Perl love letter
Tags: perl
Published: 2020-12-03 15:19:04


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.

![Love](https://dev-to-uploads.s3.amazonaws.com/i/ap4jtibcn0an8ml122zz.png)

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 ?

# My Perl killer features quick cards
![Killer features](https://dev-to-uploads.s3.amazonaws.com/i/byosdvprn9sh1ow7qn2k.png)

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.

## Flexible parser
The parser is incredibly smart, giving the user the true power instead forcing developer to adapt himself to the parser.

## CPAN
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" 

## Community
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.

![Community](https://dev-to-uploads.s3.amazonaws.com/i/snp9kmai5c401c0lbh1i.png)

Perl folks are also funny, doing coding challenges or playing with software computing weirdnesses.

## Toolchain
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.

## Mojolicious
This is a masterpiece providing one of the best web framework between all languages plus a general purpose programming framework.

## Regex
No need to introduce regular expression and their strong roots interlaced with Perl.

## Testing culture
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.

## DBI
Purely another masterpiece, invented when database interfaces were not even existing. 

The way it is made is for me a model of software architecture.

## Backward Compatibility
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. 

![Yeah](https://dev-to-uploads.s3.amazonaws.com/i/9qi3cecn3ryrx01ehyth.png)

## Meaningful error messages
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.

## Do What I Mean
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.

## Web Tools
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.

## The more "Unix-like" language
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.

## Free forever
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.

## Conclusion
This was my testimonial about why I love Perl.

![Crying cat](https://dev-to-uploads.s3.amazonaws.com/i/phuw89enq3ugelxdd2ve.jpg)

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 ?