I've used Perl for a while now, probably over 5 years now. Most of the things I wrote were to help me get something done, not for wider distribution. Most of my applications have been web related, and tied to Apache and the original design goals. I've never needed to write a module, though I've used lots of other peoples.
A year or so ago I decided to convert a cut-n-paste configuration subroutine into a small module. A quick scan of CPAN will show quite a few configuration modules, none of which did what I wanted. So I developed my own code up into a read/write config module. I've used it in a few applications since, and it works fine - though with hind-sight I'd have probably been better of with something from CPAN...
After reading Object Oriented Perl I decided to make another module, this time with an-OO interface rather than functional one. This resulted in my RSS tool-kit, which I eventually submitted to CPAN.
So now I've done two modules, one I'd probably be better of without, and another which while nice, I've only used once myself in one application, I was getting a little disenchanted with the whole process.......
Then along came our evil service management project at work. A nice Mr davorg did some coding for us, mostly taking my mess and formalising it into some semblance of order. The work was completed eventually, and I'm even told the end users like it. Since going into production some new features have been added, and because we have a core module, what would have taken days without it was done in a morning. Even better many system wide changes can be made by working on just one module.
I know this is all very obvious to many people, but being able to go home on time having completed an assignment ahead of time, with happy end users gives me a really good feeling inside!