Bei POST kommen die Parameter über STDIN, wenn ein anderes Modul davon schon gelesen hat, geht die neue CGI Instanz leer aus. Ich würde in der Richtung schauen.
Wenn du mehrer CGI Instanzen hast die von STDIN lesen sollen, kannst du so was versuchen (ungetestet):
BEGIN
{
local $/=undef;
my $stdin=<STDIN>;
close(STDIN);
open(STDIN,'<',\$stdin);
seek(STDIN,0,0);
}
Das erzeugt ein Inmemory Filehandle. Vor jeder neuen CGI Instanz macht du ein
seek(STDIN,0,0), damit das CGI daraus lesen kann.