質問。スレ違いなら誘導よろ。

初期画面表示→重い処理→画面更新(処理結果を反映)
ってなことを、CGI+Perlでやりたい。

$| = 1;
if (my $pid = fork()) {
  waitpid $pid, 0;
  header();
  print "<html><head></head><body>hoge</body></html>";
}
elsif (defined $pid) {
  header();
  print "<html><head></head><body>foo</body></html>";
  close STDOUT;
  # この後、重い処理 
}
else {
  exit 1;
}

こんな具合なコードを書いてみたんだが、親プロセス終了まで
画面が返って来なくてうまくいかない。
どうすればいいか教えてちょ。