In a CGI environment POST data is available as an encoded STDIN stream. In order to get that data CGI.pm must read it from STDIN (
update: and it will probably do so the moment you create the CGI object) . That means that if any other code also tries to read that POST data it probably won't find it.
Moral of the story is: use one and only one method of parsing CGI input into parameters.