quotemeta関数 - 正規表現文字のエスケープ
quotemeta関数を使用すると、正規表現で利用される文字列を通常の文字として扱うことができます。ワード文字以外のすべての文字の直前に\がつけられます。
# 正規表現文字列を通常の文字として扱う $ret = quotemeta $str;
正規表現文字を含んだ文字列を通常の文字列としてパターンマッチさせるサンプルです。
# 正規表現文字を含んだ文字列を通常の文字列としてパターンマッチ my $message = 'This message contains a{2}'; my $match = "a{2}"; $match = quotemeta $match; if ($message =~ /$match/) { print "Match!\n"; }
quotemetaは正規表現の特殊文字である\Qと同じ意味を持ちます。上記のquotemetaは以下の記述と同じ意味にないます。
# \Qを使ってquotemetaと同じ意味を表現 my $match = "\Qa{2}";
正規表現については実践で役立つPerl正規表現 完全解説をご覧ください。