in reply to strange behavior of parenthesis

This is a scalar assignment, and the right side is evaluated in scalar context:
$foo = ...
These are list assignments, and the right side is evaluated in list context:
($foo) = ... @foo = ... %foo = ... @foo{LIST} = ... @foo[LIST] = ... () = ...
What the match operator returns depends on success of the match, context, presense of capturing parenthesis, and whether there's a //g flag. See the doc for details.