If by “hard to understand” you’re including trying to understand someone else’s code, Perl can be a nightmare.
There’s some truth to it, but it’s mostly that junior developers and senior developers with no discipline that give it a bad name.
The major problem is that it has one of the the highest capacities for writting incredibly dense code there is, paired with very powerful language transformation tooling (i.e. switch statements were added as a module, but can also be used for funny evil.)
Imo the amount of magic variables in perl is too damn high.
Like I don’t want to have to keep all that in my head while parsing through thousands of lines of code. I spent a few years working as a perl developer and even near my last days there I still found myself digging through docs to figure out what certain symbols meant and did.
My first developer role was as a junior developer and I was tossed into single letter variable loop hell in perl lol.
I was telling my mentor that if I were introduced to perl now that I’ve got several years of experience in a variety of different languages and thought models, it probably wouldn’t bother me as much. I kind of like bash (sometimes) and perl is really a hyper extended scripting language so going from bash to perl isn’t too bad. But given that that is what I was started in, I have a massive distaste for it and I doubt that will ever change.
// Dear programmer
//
// When I wrote this code, both
// God and I knew how it worked.
// Now only God knows!!
//
// Therefore if you are trying to
// optimise this routine and it fails
// (most surely) please increase
// this counter as a warning for the
// next person
//
// total_hours_wasted_here = 254
Perl isn’t particularly worse than JavaScript. Which itself has a lot of quirks, of course. The big thing with Perl is getting your head around list and scalar context. There’s a learning curve to it, but can be very powerful once you understand. I wish more languages would do list flattening by default.