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