>perl -wMstrict -le "use Data::Dump; ;; my @GET_STRING = ('no', '*nine', '*(not)', '* yes', '* (yup)', '* ya)'); ;; my @ra = map { $1 if / ^ \* \s \(? ([^\)]+) \)? /x } @GET_STRING; dd \@ra; " ["", "", "", "yes", "yup", "ya"] #### >perl -wMstrict -le "my @GET_STRING = ('no', '*nine', '*(not)', '* yes', '* (yup)', '* ya)'); ;; my ($first) = map { / ^ \* \s \(? ([^\)]+) \)? /x ? $1 : () } @GET_STRING; print qq{'$first'}; " 'yes'