It is easier to understand code that you have written yourself than code you've got from CPAN, and I think that is often a motivation for reinvention. Not because your own code is better, of course, but simply because you've thought into it, and because the code itself is an expression of your own idea. This is a trap for decent, but not great, programmers.
I think you can legitimately reinvent large projects only if you have a really thorough understanding of the existing projects. Which is hard, and time consuming. But is also likely to increase your skills as much or more than implementing something half-baked.