>>471
ありがとうございます。
すみません、一つ忘れてました。。

$str =~ s/%__${value}\.begin__%(.+?)%__${value}\.end__%/hoge/g;
のような用途を予定しています。

\Q〜\E 内が全てエスケープされてしまうので、
本来使いたい正規表現が無効になってしまいますね…。

やはり変数個々に対してエスケープでしょうか。