Perl has all of these things. If you're coding in Perl and you write bad code, it's your fault. If Perl has a fault, it's that it's easy to write code that you think is done, when you have more work to do if you want to develop a full-scale application. However, you can write incomplete but good-enough code in any language. (And I will always use Perl to write once-off scripts. It's perfect for that task.)
My last project at work was rewriting a 4k line monstrosity in Perl into 500 lines of Python which do exactly the same. I can't even blame the original authors (it was likely their first larger program), it's just that Perl makes it so easy to write horrible code.
I know that Perl's defaults (mainly lack of strict and warnings) can make it easy to write code that easily breaks or has bugs or is harder to maintain, but it is the first time I hear the argument that it make it any easier or encourage someone to write 4k lines when he could have written 500 lines.
I would guess that guy would have created a 4k monstrosity in Python if that's what he had to use without having enough experience.
Or maybe I am not being imaginative enough? Can you give examples from the program you rewrote where Perl encourage beginners to write "huge monstrosities" while Python would have encouraged them to write succinct code ?
So yes - some people will still write perl, but it will be an obscure language one day (hopefully).
That's a silly argument. Do you know of any language where beginners don't have to learn between language primitives to create complex data structures, for example? Assuming (for example) that parentheses create lists and that lists are first-class data types in Perl (and neither is true) is a fine example of Blub programming false cognates.
Lists and arrays are not the same thing in Perl. Parentheses do not create lists in Perl. Parentheses group terms.
You'd have the same sort of problem conflating tuples and lists in Python, especially if you don't know about the special comma syntax and zero-or-one element tuples.
I didn't skip the basics of the language. Still - basics keep biting me every single time. I don't think it's my problem after all... I mean - it may have its strange rules - but if it's less easy to handle than other languages, it won't draw new people in.
perlfaq4 explains the difference between arrays and lists in Perl in plain language. One is a variable. The other is a value.
The rest is operator precedence, grouping, and context. If you don't understand those, you don't understand Perl. Granted, most tutorials do a terrible job of explaining those, but these are fundamental concepts.
* ... but if it's less easy to handle than other languages, it won't draw new people in.*
That sounds like a tempting explanation for language popularity, but I doubt it's true -- it's too close to the "Obviously the technically best solution deserves to win!" fallacy. I suspect that practicality, availability, and the ease of which you can just get something done trumps quality. Certainly PHP's ease of deployment has contributed to its popularity more than consistency and correctness of design.