Please stop repeating this misconception. People who put little effort into learning how to program write "write-once" code in any language. Perl had the "misfortune" of being the only dynamic language on the block for a long time, leading to many people reaching for it to get things done without bothering to actually learn the language, thus creating a vast corpus of low quality code.
(It does not help that the definitive resource of Perl for bioinformatics people, which i've seen in libraries like those of the Genome Campus in Cambridge, isn't worthy of being used as toilet paper, yet influenced a whole generation of scientists.)
> I've spent far too many hours trying to figure out what a perl script does
How often do you reach for perltidy when you do this?
Perl is the language with the highest occurrence of "subtle" and "ambiguous" in its documentation and tutorials that I have ever seen. Humans may be subtle and ambiguous, but programming languages should be clear and precise.
Here's the book I've been using: http://bixsolutions.net/
* chromatic's "Modern Perl" - which has a free CC licenced version (although it would be nice for you to pay some money to support the good work of the author and publisher ;-) http://www.onyxneon.com/books/modern_perl/index.html
* Curtis Poe's "Beginning Perl" http://ofps.oreilly.com/titles/9781118013847/
(Bias warning: Curtis is a mate - but it is a very good book on the topic. Honest ;-)
As for learning Perl, the best resource is http://perl-tutorial.org
You will find an explanation there of how to judge a learning resource and a list of the most current texts that teach modern Perl.
Any language can be used to write a riddle. Even Python[1][2]. It's the community's values that determine code quality. The banner of "impossible to read" hangs over the Perl community and it has been my experience that it reminds us to write much better code.
[1] http://www.python.org/search/hypermail/python-1993/0232.html [2] http://p-nand-q.com/python/obfuscated_python.html
It hangs there, put there by other people. Sadly it correctly would hang above people writing perl but outside the community. We have many efforts going on to get people to write nice and readable Perl.
Too much perl code is essentially write once and forget. It gets results quick but it is a disaster for repeatability which is an essential part of science. I've worked on bioinformatics perl projects where bugs canceled each other out (ie code that was supposed to clear an array and repopulate it with corrected values did neither so the original values were returned). And I've spent far too many hours trying to figure out what a perl script that is the reference implementation for a certain procedure actually does.
Their certainly still are scientists who use it but python and R are gaining ground for good reason.
Wiring together analysis pipelines with pipes as they describe is, however, an excellent technique regardless of language.