in reply to Avoiding GET in CGIs

To answer the question directly:

No, there are no real side-effects to this method. That way should work just fine. It might be fastest if you have this run before loading CGI.pm (via a BEGIN block). You could also check for

$ENV{'REQUEST_METHHOD'} ne "POST" ## or $ENV{'REQUEST_METHOD'} eq "GET" ## or even $ENV{'REQUEST_URI'} =~ /\?/
Finally, note that you original code, technically speaking, should test for the existence of QUERY_STRING, and not the truth of it, using defined or even exists. But since most cgi scripts require a pair, putting ?0000 will probably not do much for your scripts, so the truth test should suffice.

P.S. Sure it can be worked around, but it *will* prevent people from being able to bookmark a URL with parameters already set.