フォームデータをSTDINで取得できないケース

my $cgi = new CGI;
したら、その後フォームデータをSTDINで取得できなかった。
[取得できなかった方法]

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

$bufferの中身は空。

もちろんこの形式では取得可能。

my @params = $cgi->param();

また、my $cgi = new CGI;を削除したらSTDINで取得可能。

どちらかにせよということ?

さくらのレンタルサーバにて。