Well, I just want to say three cheers for the maintainer, who has spent the last 10+ years keeping CGI alive and kicking. Although in general the Perl web development world has moved on to other things, there was a time where a handful of modules were Perl's claim to fame and CGI was one of them. Back when I first started programming with Perl I doubt I started many applications without saying "use CGI;" at the very top of my script. Along with DBI, the various DBDs I could quickly and easily build a database backed website and I didn't need to spend a ton of money on licensing fees or training.
You can make fun of the documentation if you want, but don't forget there was a time not many years ago that if you wanted programming API documentation you had to pay for it, and usually the books were not cheap, nor were the classes inexpensive. CGI was a gift to Perl and it's one of the main reasons Perl became such an important language for web development.
Ignore the troll below (or above, depending on the number of edits the troll make) and just RTFM. The correct argument to pass a document encoding to CGI::header() is the "-charset" parameter.
See the "-utf8" pragma to enable auto-utf8 on input parameters.
Use a template module (Template Toolkit for example) for HTML generation not CGI.pm' s template interface.
Jonathan Rockway' s review does not make any sense either. You can still use CGI.pm for input processing and uploads and it is suitable for simple applications. Also it is still maintained and new fetures added if needed and stable.
Edit: It looks like the troll (BKB) is coward enough to not mention his/her edit and replaced the old one completely with a more nonsense review.
This is a reply to BKB's post fon 2008-06-23 00:55:33.
BKB: There are plenty of things other than CGI.pm. CGI.pm is not for new apps, it's for keeping legacy apps working. New Perl web applications use frameworks like Catalyst, Jifty, Continuity, CGI::Application, Mason, etc. You should take a look at one of those (Catalyst is the most popular) instead.
Clearly the standard in web programming, CGI.pm uses some innovative techniques to handle unique problems. Though the module is rather bloated, lighter modules refractoring its functionality exhist as a result of Lincoln's hard work.
It would be nice if the HTML generation methods weren't in there, but they have their use sometimes (though I'm more inclined to pull in TT or similar). The best thing about this module is that it's omnipresent. Not always a recent version, but there's _some_ version.
Okay, it's a great module. With great documentation. Everyone knows that. But my beef with CGI.pm is that it tries to do too much. There are so many things you could do with this module and it's so big. Also it would be nice if there were some more built-in security features turned on by default... Anyway, why are you reading this? You are still going to use this module no matter what. :)