in reply to Matching a keyword, value and optional comma delimited values

There is no way to get $3 without the commas in it, because each application of a parenthesized group has to match a continuous substring. You will have to do this in two steps. Here's another two step solution:
($keyword, $value, @optional) = split /\s*[=,]\s*/; $optional = join ' ', @optional;