Short little function for retrieving configuration and CGI query values. It first attempts to get a result from the CGI request. If that value is not present, it attempts to get a result from the UserData (which stores user preferences). In neither of these sources provide a value, it returns the default in the second parameter.
One subtlety worth noting. CGI.pm has a feature utilized here. If you call GetParam("keywords", ""), you will get SomePage when the url looks like http://www.wikiserver.org/wiki.pl?SomePage
Just as a style point, why pass the default in the second parameter when you could just return undef if you can't set it, and then call as
$foo = &GetParam("foo") || $default;? The way it's done at the moment, it's not immediately clear what the second parameter is for. I thought it was a get-set method to start with. This new suggestion is self-documenting.