Assuming you structure your program well and test properly at each stage, there's no reason why print and Data::Dumper shouldn't suffice for locating bugs. It's the stupid programmers who need advanced debugging tools, and they're the ones who won't understand how to use them :)