in reply to Storing regexps in variables

A '+' has a special meaning in a regular expression (it means "one or more of the preceding character"). Two of them in succession is a regex syntax error.

Your problem is that you have regex metacharacters that you want to be treated as normal characters. That is what the \Q escape sequence is for.

print "Found" if $string =~ /\Q$substr/;