$pattern = "hello world :)"; if (/$pattern/) { print "match\n"; } これは、")" の数が合わないのでエラーになる。 正解は $pattern = "hello world :\)"; だが、 $pattern = quotemeta "hello world :)"; で OK /[A-Za-z_0-9]/ にマッチしない全ての文字がエスケープされる