Some more thoughts on this - and let me put my answers into context.
in reply to Use modules or roll your own?
Context 1 - You are working for me and being paid to produce high quality applications that are maintainable, efficient, and developed within a reasonable time. If I catch you "rolling your own code" when I know there are perfectly good and widely accepted modules that you could (should?) have used instead, you better have a damn good answer. I am not paying you to be creative, or to learn everything there is to know about forking (or CGI or threads or . . . ).
Context 2 - You want to increase your understanding of Perl and related matters on your own time. Delve into the deepest innards of whatever modules take your fancy. Try to improve them. Discuss your findings with the module author(s).
Context 3 - You are undertaking a programming course at university of college. Then this depends on the purpose of the assignment I had set you. If it was to show your understanding of CGI request processing, paramater handling and so on - then I would want to see your own code (and not something ripped off from CGI.pm). If it was an assignment to develop a working, live web application, then makes woudl be deducted for not using CGI.pm, CGI::Application or whatever modules made sense.
I suspect the initial case that started this thread fits into context 2. So, learn from the masters - and improve on them if you can. Wasn't there some discussion several months ago about Isaac Newton being able to see further that others because he stood on the shoulders of giants? In CPAN there are many giants whose shoulders we can all climb on. Some are true collossus, while others are barely taller than you and I.