|Think about Loose Coupling
It's refreshing to read a topic like this, I tend to find this line of thought is automatic flame bait in some circles (which shall remain nameless).
I agree with you in that necessity dictates everything, even core modules started out as someone needing to do something bad enough. I would also like to add one further point to what you said blue_cowdawg - modules make you user not a programmer.
Yes, there are times when you have a deadline to meet and the modules are there, but if you have time why miss out on the opportunity to learn something new?
Of course the counter replies run thus:
testing - modules on CPAN have been tried and tested by loads of peeps
optimisation - CPAN modules have been optimised (inferred by people who know how to do that)
and of course "don't re-invent the wheel".
But what the hell, say I, if you have time and the inclination, try and build an SMTP server using the socket module - you might not finish it, but (I believe), like a pilgrimage, the journey is worth more than the destination.