次のようなスクリプトを実行すると、「CGI開始」 は出力されますが、「CGI終了」 は出力されません。

このCGIには問題点があり、if ("検索対象文章" =~ /$hoge/i) の $hoge が "+" なので、正規表現として不正になっています。
本来ならば、500 Internet Sever Error となるべきだと思うのですが、何故かエラーにならず、スクリプトが強制終了されるだけになります。
これは何故でしょうか?

if ("検索対象文章" =~ /+/i) と書けば、当然 500 Internet Sever Error になります。

--------------- test.cgi ---------------
#!/usr/bin/perl

print "Content-Type: text/html\n\n";
print "CGI開始";

$hoge = "+";
if ("検索対象文章" =~ /$hoge/i) {
print "マッチしました。";
} else {
print "マッチしませんでした。";
}

print "CGIエンド";
exit;
----------------------------------------

ちなみに、この $hoge は実際にはCGIのユーザ入力の値です。
OSインジェクションやSQLインジェクションは聞いた事がありますが、Perl正規表現インジェクションという話は聞いた事はありませんが、
もしこの実装に、スクリプトの強制終了以外のセキュリティ上の問題点がありましたら教えていただけたら幸いです。
また、ようするに検索エンジンのように文章の検索を行いたいわけですが、ユーザ入力の正規表現のメタ文字の無効化方法がありましたら
教えて下さい。

お願いします。