Thanks for your accurate explanation. I knew the functions shift and lc. In fact, the tricky points were the comma and the plus.
I have the habit to read the documentation but I don't see very often this kind of syntax in it. to imagine how works the array reference of a grep followed by 2 map in a loop is not easy for everybody I guess.
but thank to the monks, everybody can learn.