Perlで正規表現のパターンに変数を使う際の注意

使い慣れていないPerlでハマったのでメモ。

正規表現のパターンに変数を使ったとき、その変数の値が正規表現のメタ文字を含んでると正しく動かない。言われてみればその通りなんだけど、気づくのに30分近くかかった…。

quotemetaを使って事前にエスケープすれば解決。

$value = quotemeta( 'foo(bar)' ) ;
if ( $text =~ /$value/ ) {
	print "OK.\n" ;
}