La primera columna de los datos, según el formato que nos has presentado, puede ser un 2 o un 3, e indica la posición del miembro en la fila (está en la primera columna o la segunda.
Entonces, la línea
Using perl Syntax Highlighting
my $posicion = $miembro - 2;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
lo que hace es convertir el valor de $miembro (2 o 3) a un valor para $posicion (0 o 1).
Quizás hubiera sido más claro usar la palabra $columna, en lugar de $posicion.
Luego, la línea siguiente se hace la pregunta ¿el $miembro es un 2 o ya existe una persona en la columna donde tenemos que pintar? Es decir: ¿tenemos la certeza de que tenemos que pintar un nombre en la primera columna o, de cualquier forma, la columna donde vamos a pintar el nombre ya está ocupada por otro nombre? Si ese es el caso, es que ese nombre debe ir en una nueva fila.
Para ello creamos una nueva fila de tabla, pintamos los nombres de la @fila -recolectados antes-, y ponemos la @fila a cero. Y luego, en la línea 33 guardamos -en su $posicion- el nuevo nombre.
Es resumen:
- si nos viene un miembro de tipo 2, siempre creamos una nueva fila de tabla y lo ponemos en la primera columna
- si nos viene un miembro de tipo 3, lo ponemos en la segunda columna, salvo que ya lo hayamos hecho antes con un miembro anterior, en cuyo caso, antes creamos una nueva fila de tabla.
Es prácticamente igual a resolverlo con lápiz y papel
salvo que aquí usamos @fila para guardar temporalmente los nombres, y luego sacarlos todos a la vez, por filas, cuando sabemos que el siguiente nombre debe aparecer en la siguiente.