正規表現内で変数を展開するときにハマったのでメモ
以下のように変数$aが変数$bを含んでいるはずなのになぜか正規表現の返却値が空文字だった。
my $a = '(error)';
my $b = '(error)';
print $a =~ /${b}/; # ''
どうもメタ文字(カッコ)が文字列中に含まれていることが原因だったようです。
てっきり自動的にエスケープされるものだと思っていました。
なのでテキスト修飾子"\Q"と"\E"を使って明示的にエスケープしたらうまくいった。
my $a = '(error)';
my $b = '(error)';
print $a =~ /\Q${b}\E/; # '1'
##参考URL
http://stackoverflow.com/questions/2001176/how-can-i-escape-meta-characters-when-i-interpolate-a-variable-in-perls-match-o
http://www.kent-web.com/perl/chap7.html