Quantifier follows nothing in regex; marked by ...

2010年11月18日に持ち込まれた謎

Windowsperlを動かす。

if( $str =~ /$list[$i]/ ) {

の行で
Quantifier follows nothing in regex; marked by <-- HERE in m/? ...
と怒られる。

正規表現を量指定子で開始しています。もしそれをリテラルに使いたいなら、バックスラッシュでクォートしてください。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。

だそうだ。
$list[$i]の中身が悪さしてるのねぇ。

quotemeta関数を使って解決。
英数字以外の文字をバックスラッシュでエスケープしてくれるらしい。

if( $str =~ /quotemeta($list[$i])/ ) {

そんなにエスケープしても大丈夫なのかな?と素朴な疑問。