You just need parentheses around the LHS to force list context...
(Note: In the code originally replied to, the map block statement was $1 if /^\*\s\(?([^\)]+)\)?/) (tag – you're it)
But that would only work if the first item in @GET_STRING matched the regex. (I'm assuming this array may contain any number of matching or non-matching strings in any order.) If it did not, an empty string would be assigned to the scalar. See first example below.
Update: Also:
>perl -wMstrict -le
"my @GET_STRING =
('no', '*nine', '*(not)', '* yes', '* (yup)', '* ya)');
;;
my ($first) =
map { $1 if / ^ \* \s \(? ([^\)]+) \)? /x } @GET_STRING;
print qq{'$first'};
"
''
|