in reply to set value of a variable to a regexp

Maybe what you are looking for is Regexp::Assemble.

-- snip
source - When using tracked mode, after a successful match is made, returns the original source pattern that caused the match. In Perl 5.10, the $^R variable can be used to as an index to fetch the correct pattern from the object. If no successful match has been performed, or the object is not in tracked mode, this method returns "undef".
-- snap
use Regexp::Assemble; my $r = Regexp::Assemble->new->track(1)->add(qw(foo? bar{2} [Rr]at)); for my $w (qw(this food is rather barren)) { if ($w =~ /$r/) { print "$w matched by ", $r->source($^R), $/; } else { print "$w no match\n"; } }
prints
this no match food matched by foo? is no match rather matched by [Rr]at barren matched by bar{2}