in reply to Re: Assign result of map to scalar variable
in thread Assign result of map to scalar variable
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'}; " ''
|
|---|