|Problems? Is your data what you think it is?|
In a sick, masochistic way that is one of the reasons I love Perl.
I'll write a program and it works, but parts of it are inelegent or slow or whatever. So I tweak it around, get stuff to work better or look better, or just give it better hack value. I play around with it until the thing is a work of art.
Now, if I need to quickly write something that works, I can. And yes, parts of it will suck. But as soon as I have some time to play around with it I get to tinker to my heart's content. That's the beauty, in my opinion, of Perl: TMTOWTDI covers not only the idea that there's more than one valid way to recurse through an array, but also that it's okay to create quick fixes where necessary and to tinker endlessly where you want.
And it has to be said that once you've gotten a working model and the stress of "Deadline" has turned into the frustration of "Performance Testing", that is the time to tinker with minutiae. And when you are that point is when you post a really cool SoPW and take advantage of the wisdom of the same community that gave you Perl in the first place. After all, it's great that Perl is fast and fun and powerful, but perhaps its biggest strength is the huge open source community tickled pink to give you scalar(@members)+1 opinions on whether you've "got it right" and how you can make it better. Eventually you learn to recognize all those patterns yourself and you get that feeling of satisfaction you mentioned.
Then you think of a way you can tweak your program some more, and the hacking and tinkering continues. Maybe I'm unusual in liking the idea that even though something's "finished" in the sense that it has all the features in the spec plus it reads email and the speed of the program is 10 or 20% above the projected "best case scenario", I can still work on it and improve it. Or just work on it.