Back when I was doing Delphi, I vowed I would never use another language without an integrated debugger. But then I started web development (in Java and C++ actually) and realized that an integrated debugger isn't worth setting up when you're trying to debug incoming web requests. It can be done, but the hassle outweighs the benefit. So I got used to logging. And... logging can be so much better! If you have really good logging (as in, only logging the points of interest and variables of interest, and configurable log levels) on a complex algorithm, you can actually read the log faster than stepping through hundreds of method calls, or walking backward through massive data structures to figure out where the algorithm went wrong. This even carries over to JavaScript, where I've had times that the console.log was more useful than the built-in debugger. Especially when the file has been minified.
I've gotten the most use out of Log::Any. I wrote my own minimalist adapter for it Log::Any::Adapter::Daemontools which can change the log level on the fly in response to SIGUSR1 and SIGUSR2. And then I have written in-house Plack middleware that can change the log level depending on a browser cookie. (I might get that published some day) The end result is that I can set that secret cookie on my browser and then perform actions on the production system and see the full trace output even while other users are hitting the same server and generating minimal log output. (The log output stays in the server logs, so there isn't any security risk in this cookie as there would be if it pushed the logs to the browser.)
The other thing Perl has that kills the need for a debugger is nice easy unit testing. See Test::More or Test2. If you structure your program as a collection of small mostly-independent modules, you can wrap each of them with unit tests and work out all the bugs before you assemble them into anything complicated. It's amazing how few bugs I end up having in the main program if I've fully tested each of the components first. And there's always "perl -d" for debugging the unit tests, if the log wasn't enough.