A common complaint is that Perl is ugly. In particular, its prodigious use of punctuation puts off some people; Perl source code is sometimes likened to "line noise". In The Python Paradox, Paul Graham both acknowledges and responds to this:

At the mention of ugly source code, people will of course think of Perl. But the superficial ugliness of Perl is not the sort I mean. Real ugliness is not harsh-looking syntax, but having to build programs out of the wrong concepts. Perl may look like a cartoon character swearing, but there are cases where it surpasses Python conceptually [1]

Another criticism is that Perl is excessively complex and compact, and that it leads to "write-only" code, that is, to code that is virtually impossible to understand after it has been written. This stems from the Perl design philosophy of Huffman encoding, where the most used operations should take the least amount of typing. As part of this, several Perl functions have side-effects or default arguments, allowing programmers to write terse programs that don't use many alphabetic characters. It's easy to write a program that a week later looks like a jumble of line noise, cartoon swearing, or other seemingly random sequences of punctuation, as noted by the authors of Learning Perl:

In fact, nearly every sequence of punctuation is used for something in Perl. So, if you get writers' block, just let the cat walk across the keyboard, and debug what results.


In a 2003 study titled Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java, Lutz Prechelt wrote:

...the potential uglyness of any aspect of Perl has carefully been balanced with the power that can be derived from it. Nevertheless, Perl makes it relatively easy to shoot oneself in the foot or to produce programs that are very short but also very difficult to understand. For this reason, somewhat like for C++, writing good Perl programs depends more strongly on the knowledge and discipline of the programmer than in most other languages.[3] (PDF)

In 2000, Eric Raymond echoed the "write-only" code sentiment:

The syntax that had seemed merely eccentric at a hundred lines began to seem like a nigh-impenetrable hedge of thorns at a thousand. "More than one way to do it" lent flavor and expressiveness at a small scale, but made it significantly harder to maintain consistent style across a wider code base. And many of the features that were later patched into Perl to address the complexity-control needs of bigger programs (objects, lexical scoping, "use strict", etc.) had a fragile, jerry-rigged feel about them. [4]

Although taken out of context, Python programmers and authors[5][6] are often fond of repeating this quote from Larry Wall:

Perl is worse than Python because people wanted it worse.
Community content is available under CC-BY-SA unless otherwise noted.