in reply to regular expressions with !
You're a victim of operator precedence - the ! has higher precedence than =~ - so your expression evaluates as if ((!$test_string)=~/$regex/), which is false.
Either use !~, as already suggested, or use parenthesis around the whole match if (!($test_string =~/$regex/)).
You do not need to use the /e modifier!
An intellectual is someone whose mind watches itself.
-- Albert Camus