The first one: m/[a-z]+[_|\\.]/g -- no curves in this pattern, and the results matching the whole pattern are saved in the result array.

The second one: m/([a-z]+)[_|\\.]/g -- a pair of curves embrace the part of "[a-z]+", and the results matching this part are saved in the result array.

The third one: m/([a-z]+)([_|\\.])/g -- two pair of curves embrace the two parts of the pattern respectively, and the results matching the two parts are all saved in the result array in the order of ($1, $2, $1, $2, ...).