500エラーなんてものに頼っていては、凡ミスはなくならない。
エラーログ見るとかCGI::Carp使うとか、とにかくPerl自体のエラーを見られる環境を
作ってからいじるべし。できれば use strict; と -w オプションも使うのが望ましい。
数時間考える暇があるんならこっちに時間をかけれ。