Nico Hailey ndh@cats bad-language-Perl Perl, with its seductive features (text processing), leads one down the garden path of madness. It is unreadable in the extreme. In the best case it looks like punctuation has been vomited forth upon the screen by a brain-damaged monkey. In the worst case it looks like modem line noise. Opaque built-in variable names combine with infernal dynamic scoping to allow just about anything to be syntactically legal. This cavalier attitude builds vast superstructures within which bugs can hide and breed. References in Perl are particularly loathsome: &{ $dispatch{$index} } (1, 2, 3); This snippet is offered as an example from Programming Perl, 2nd edition. "dispatch" is an associative array of function references, which is dereferenced and applied to the trailing values. This example, obvious to the most casual observer, uses far too many non-alphanumerics to be friendly to an actual human coder or reader. Like the mosquito, even Perl has its place in the world of programming languages. That place is short shell scripts, preferably under 100 lines. It is useful as a glue language due to the fact that modules are available for just about anything, from port-scanning to parsing Latin. However, when code reaches a certain level of complexity, the structure provided by the more carefully planned languages is appreciated. Our punits assignment was a perfect pedagogical tool for illustrating the key points of the previous paragraph. Perl showed itself to be excellent for text processing of the units file, with good regular expression support. But, for the recursive decent part of the program, it was a data-structure nightmare. The other part of the Perl problem is Perl programmers. For the most part, these people exist to shoehorn Perl "solutions" to problems which would have a more cogent solution in an appropriate language. While a language culture may be out of the scope of a programming languages class, the irritating traits of the Perl community are worth discussing because Perl has no fixed standard. This results in Perl people constantly generating fresh horrors which distill into yet less readable code.