HTML::Entitiesの利用…問題解決!

 今回、取得したHTML文章に対し、HTML::Entitiesを利用して、文字列内の'&'をエスケープし、内部で'utf8'のマルチバイト文字に変換してからHTML::parseを行うことで、'&'を利用したHTML内の文字参照が、勝手にデコードされるのを抑制することができました。

  $m = encode_entities($document, '&');
  $m = decode('utf8', $m);

として、utf8フラグを強制的に付けてから、parse($m)を呼んで、特定の部分をテキストとして得る為に、

  $m = encode('utf8', decode_entities($test->as_text));
  print $m, "\n";

として、as_text()関数から得た文字列からエスケープを外し、utf8フラグを外して出力することで、文字化けを防ぐことができるようになりました。Perlのみならず、日本語を扱うときに必ず引っかかる、文字コードの問題でしたが、今回また少しその辺のことを知ることができました…。
 サーバ上のCGIも既に直してありますので、今後は文字化けする心配はなさそうです。まだ少しバグが残っているので、今後そこをつめていきたいと思っています。