Now for the rant. There is so much magic in perl that it is an extremely complicated language. To read perl code, you need to learn the meaning of any character, expression, regular expression code, and construct. As a result, perl code is generally unreadable to anyone but the perl expert. By contrast, languages like C and Lisp have simple, consistant syntaxes that are built on by libraries rather than syntastic features.
My other main gripe about perl is the craziness of escaping characters. In a regular expession, or just out in a string, so many characters have special meanings and need to be escaped. You need to memorize exactly which characters need to be escaped, and escaping every non-alphanumeric character makes strings be unreadable very often.
Scoping is pretty messed up, but I have not used perl extensively enough to give a detailed report on scoping in it.
Perl also has many other disadvantages in the implementation, such as code being interpreted every time a script is excecuted. In this post, I am focusing on the language itself.