I happen to enjoy using it much more than shell scripts for anything that needs a more complex logic or real data structures. It gives me better portability, a ridiculously large selection of easily installable modules, and the freedom to scale should I need it.
I could say this for Python or Ruby as well (and I certainly prefer using them if given the choice), but Perl is much widely adopted across many different platforms (perhaps because of its age). You can be almost certain a modern server will have at least Perl 5, while you can’t say the same for Python, and good luck with Ruby.
Sure, you can shoot yourself in the foot easily with Perl, and TMTOWTDI causes confusion, but the beauty of Perl is that you can easily start with the features you’re comfortable with and use everything else as you need it. Ruby also has this distinction.
A common complaint I hear is that Perl code is difficult to maintain.
I can say this for any language. If the author wasn’t a sadist that purposely obfuscated code, and the code is well documented, there’s no reason why Perl code would be any less maintainable than any other language.
AWK would also be a good choice for some things, but Perl has a more standard syntax, is of more general use and is (I think) comparable in speed.